我在matlab中有一些字符数组(例如10个),如下所示:
m1=['a1','b1','c1';'a2','b2','c2';'a3','b4','c5']
m2=['aa1','ab1';'aa2','ab2';'aa3','ab4']
...
我想对循环中每个矩阵的成员进行一些分析。 为了能够访问矩阵成员,我尝试了这个:
for i=1:10
my_mat=strcat('m',num2str(i));
%the analysis part
end
但是这个my_mat
并不等同于我的m1,m2,......而且我收到了错误。
你知道我怎么能解决这个问题并在循环中调用我的矩阵并且可以访问他们的成员?
由于
答案 0 :(得分:1)
当您执行my_mat=strcat('m',num2str(i));
时,您要将m1
矩阵的名称分配给my_mat
,即my_mat = 'm1'
。
最佳做法是将矩阵放在单元格数组中并在单元格上循环:
M{1} = m1;
M{2} = m2;
...
但是,如果您坚持直接从工作区循环变量,则可以使用eval
获取变量的值:
my_mat=eval(strcat('m',num2str(1)));
答案 1 :(得分:-1)
由于strcat
只是连接字符串,您应该使用eval
来评估代码中的字符串,如下所示:
eval(strcat('my_mat =',strcat('m',num2str(i))));
因此,您完整的代码案例将是:
for i=1:10
eval(strcat('my_mat =',strcat('m',num2str(i))));
%the analysis part
end