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!