matlab中变量名称怎样定义可随循环次数变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中变量名称怎样定义可随循环次数变化相关的知识,希望对你有一定的参考价值。

就是第一次循环可以定义出A1,第二次循环可以定义出A2,……
我用for i=1:n
A(i)=……
end
貌似不对啊~

哪位高手帮忙解答一下,谢啦。。

按理讲应该是对的,但是可能原因是你对A(i)赋值是向量,这样的话之前要定义A为矩阵,如:zeros(n,m);
再循环中则表示为
for i=1:n
A(i,:)=……
end
或者你可以试试先赋值,循环前添加:A=zeros(1,n);
由于初学者的程序总是有一些小毛病,所以仔细是必须的,但这得靠自己,祝你好运!
参考技术A Matlab里 给的解释是:
Because MATLAB resets the loop index to the next value when it returns to the top of the outer loop,it ignores any changes that took place within a nested loop.
貌似不可以这样做,想要得到你期望的结果,可以这样写:
j=1;
for i=1:3:10
n(j)=i;
j=j+1;
end
参考技术B for i=1:n
eval(['A',num2str(i),'=',num2str(变量名),';']);
end

实例:
n=5;
for i=1:n
eval(['A',num2str(i),'=',num2str(n^2),';']);
end本回答被提问者和网友采纳

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中变量名称怎样定义可随循环次数变化的主要内容,如果未能解决你的问题,请参考以下文章

命名工作区变量并将其保存到名称中更改数字的文件中 - Matlab

求大神啊!matlab可以在循环体中改变循环变量来改变循环次数吗?如何进行呢?

JS变量名称循环定义

matlab中for如何实现变量名称中数字的变化

matlab 批量运算命名变量

kettle 怎样从转换中过的job中定义的变量