从字符串的单元格列表中绘制数组

时间:2015-06-04 12:05:26

标签: matlab matlab-figure

假设我有一个.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

有没有办法解决这个问题,还是我错了?

2 个答案:

答案 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

如果行的长度不同,则将它们粘贴在矩阵中并绘制出来。

相关问题