How to write a changing table name in setdiff function?

Hello,
I would like to know how to write a function inside which there is a changing table name.
I have created a table which will change at each loop
eval(['Port' num2str(i-1) '= Portfolio'])
At some point I need to make a difference between this table and a new portfolio so i used the function setdiff
for example, there is a Port1 which is created, now I need to execute this :
[i,j] = setdiff(Port1(:,2), Portfolio(:,2))
Port1 is created by the eval function. Can you tell me how I can incorporate the name of the table dynamically inside the setdiff function which will pick up automatically the newly created table ( port2, port3....). I tried this but its not working :
[i,j] = setdiff(['Port' num2str(i-1)](:,2),Portfolio(:,2))
Thank you very much for your help
D

1 件のコメント

Stephen23
Stephen23 2016 年 7 月 8 日
編集済み: Stephen23 2016 年 7 月 8 日
@Davin: it is almost always a bad idea to create variable dynamically. Read this to know why:
Much simpler and more reliable is to use indexing. You can easily put the tables into cell arrays, and using indexing is then trivial.

サインインしてコメントする。

 採用された回答

Guillaume
Guillaume 2016 年 7 月 8 日

0 投票

Despite what's been suggested, there is no need to convert the tables to cell arrays (and lose information such as column and row names). Just put the tables into a cell array.
Numbered variables are a clear indication that what is in the variables should be stored together in one container, not as individual variables. In this case a cell array of tables would be the most appropriate.
portnumber = 5;
Port{portnumber} = Portfolio; %store in cell array
[coldiff, loc] = setdiff(Port{portnumber}(:, 2), Portfolio(:, 2))
No eval needed, just straightforward indexing and you still get to manipulate tables with all the advantages that they bring.

1 件のコメント

Davin
Davin 2016 年 7 月 8 日
Its exactly what I did, and its far much simpler.
Thanks Guillaume.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangePortfolio Optimization and Asset Allocation についてさらに検索

タグ

質問済み:

2016 年 7 月 7 日

編集済み:

2016 年 7 月 8 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by