matlab中循环调用矩阵
我在matlab中有一些字符数组(如10),如下所示:matlab中循环调用矩阵,matlab,matrix,Matlab,Matrix,我在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=['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,。。。我犯了个错误
你知道我如何解决这个问题,在循环中调用我的矩阵并访问它们的成员吗
感谢因为
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
由于
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
当你做
my_mat=strcat('m',num2str(i))
您正在将m1
矩阵的名称分配给my\u mat
,即my\u mat='m1'
最佳做法是将矩阵放入单元格数组中,并在单元格上循环:
M{1} = m1;
M{2} = m2;
...
但是,如果您坚持直接从工作区循环变量,则可以使用eval
获取变量的值:
my_mat=eval(strcat('m',num2str(1)));
当你做
my_mat=strcat('m',num2str(i))
您正在将m1
矩阵的名称分配给my\u mat
,即my\u mat='m1'
最佳做法是将矩阵放入单元格数组中,并在单元格上循环:
M{1} = m1;
M{2} = m2;
...
但是,如果您坚持直接从工作区循环变量,则可以使用eval
获取变量的值:
my_mat=eval(strcat('m',num2str(1)));
请注意,“您应该使用eval”的任何答案都很可能被否决。这是一个不好用的函数,即使Mathworks不鼓励使用它。一般来说:如果你需要评估,你定义了你的问题,或者你能在没有
eval
的情况下解决问题吗?!此外,上述解决方案也用于eval
!“一般来说:如果你需要评估,你将问题定义为错误的”。我可以告诉你如何把马拴在你的车上,让它移动,但是如果我们到了这一点是因为我们做错了什么,那么车必须用不同的方法移动!有时,评估是唯一的解决方案。在那些时候,这个问题被令人担忧地提出/理解。请注意,“您应该使用eval”的任何答案都很可能被否决。这是一个不好用的函数,即使Mathworks不鼓励使用它。一般来说:如果你需要评估,你定义了你的问题,或者你能在没有eval
的情况下解决问题吗?!此外,上述解决方案也用于eval
!“一般来说:如果你需要评估,你将问题定义为错误的”。我可以告诉你如何把马拴在你的车上,让它移动,但是如果我们到了这一点是因为我们做错了什么,那么车必须用不同的方法移动!有时,评估是唯一的解决方案。在那些时候,这个问题令人担忧地被提出/理解。