假设我有一个.mat文件加载的不同行(使用load filename.mat
)包含遵循相同命名约定的浮点数,例如:
file_3try = [ 2.4, 5.2, 7.8 ]
file_4try = [ 8.7, 2.5, 4,2 ]
file_5try = [ 11.2, 9.11 ]
使用自动化在一个绘图中绘制所有这些(我有比上面的示例更多的行)我使用以下方法创建了一个包含数组名称的单元格:
name{l} = sprintf('%s%02i%s','file_',num,'try');
在for循环中,num
名称中的数字和l
从1开始的计数器。
但是当我尝试使用例如:
绘制数组时plot(name{1})
我收到错误:
Error using plot
Invalid first data argument
有没有办法解决这个问题,还是我错了?
答案 0 :(得分:5)
内置了一些东西来解决这个问题
data = load ( 'filename' ); % load data and store in struct
fnames = fieldnames ( data );
for ii=1:length(fnames)
plot ( axHandle, data.(fnames{ii}) );
end
axHandle
是您要绘制的轴的句柄。它不是必需的,但使用它是一种好习惯。如果未提供,则绘图命令将在当前轴上绘制,例如, gca
。
答案 1 :(得分:2)
如上所述,您需要使用eval
。
假设file_**X**try
行的长度不同,那么您可以将所有行放在单元格中,而不是创建变量名称的单元格。因此,不是按照您的方式分配单独的变量,而是可以分配给单元格,所以:
file_try{i} = [.....];
然后,您可以循环浏览file_try
并绘制每个条目:
for i = 1:length(file_try)
plot(file_try{i});
end
如果行的长度不同,则将它们粘贴在矩阵中并绘制出来。