storing tables in an array and calling them whithin a for loop

4 次查看(过去 30 天)
I am a novice in MatLab. I have 30 different tables that imported in Matlab as CSV files. I want to choose two pairs of the tables and read a column Return of them and store it in ret_1 and ret_2 variables. Something like the following code:
data = {'AAPL', 'AXP', 'BBN'};
for i = length(data)
for j = length(data)
ret_1 = data(i).Return;
ret_2 = data(j).Return;
end
end
But I get an error, as data(i) doesn't include the content that I want to. I tried
eval(data(i)) but it says that eval() works only with strings and not arrays.
My data looks like the following in CSV files that I imported them into MatLab.
'AAPL' =
Date Low Close Return
6/3/1997 16.750 16.935 16.687
6/4/1997 16.625 16.756 16.625
6/5/1997 16.625 17.125 16.687
'AXP' =
Date Low Close Return
6/3/1997 69.079 70.075 68.750
6/4/1997 69.079 69.079 68.500
6/5/1997 68.078 69.876 67.750

采纳的回答

Peter Perkins
Peter Perkins 2017-9-1
You've shown your data, but that can't possibly be output from MATLAB because
'AAPL' =
is not something MATLAB would ever display. I'm gonna assume you've done something like
aapl = readtable('aapl.csv');
axp = readtable('axp.csv');
...
It's almost never a good idea to try to do this via an eval. A reasonable thing to do might be to use a scalar struct with fields named 'aapl', etc. So
data.aapl = readtable('aapl.csv');
data.axp = readtable('axp.csv');
and then
fn = fieldnames(data);
for i = 1:length(fn)
for j = 1:length(fn)
ret_1 = data.(fn{i}).Return;
ret_2 = data.(fn{j}).Return;
end
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by