How to write a changing table name in setdiff function?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Guillaume
2016 年 7 月 8 日
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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!