matlab中eval语句循环变量的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中eval语句循环变量的问题相关的知识,希望对你有一定的参考价值。

for j=1:19
for i=1:19
eval(['T','=','a',num2str(j),'==','b',num2str(i),';'])
eval(['s(num2str(j),num2str(i))','=','sum(T(1:1980,1))',';'])
end
end
这程序理论上会生成一个19*19的S矩阵
可我生成的是57*57的矩阵 错在哪

你可能没理解好eval的用法,它将字符串转为正常语句执行,()中是被它操作的字符串,[]中是被拼接起来的字符串,之所以要拼接是因为诸如a1这样一个变量名是随循环而变化或由其他过程来决定的。
如aj=bi写在eval里是这样的 eval(['a' num2str(j) '=b' num2str(i)]) 只有起变化的部分打断原来的语句,其余部分用单引号保留,被连接的字符串之间留空格或逗号。eval(['T=a' num2str(j) '==b' num2str(i) ';']) eval(['s(' num2str(j) ',' num2str(i) ')=sum(T(1:1980,1));'])追问

貌似不是这出的问题,不过谢谢哈,确实不太熟悉matlab

参考技术A a、b是向量吗,出错在第一名eval追问

a,b是向量,各有19个值,即a1,a2,a3,a4,....,a19,b1,b2,b3,....,b19

追答

应该改成这样:
eval(['T=a(' num2str(j) ')==b(',num2str(i),');'])

才能引用a向量中的元素a(1)、a(2)等。

以上是关于matlab中eval语句循环变量的问题的主要内容,如果未能解决你的问题,请参考以下文章

“matlab”中eval函数怎么用?

matlab中的eval是啥意思

matlab eval函数

Matlab变量分支语句和循环语句

matlab 变量批量赋值

如何在MATLAB中 用SAVE循环输出TXT文件,文件名含有变量