matlab 循环赋值问题

Posted

tags:

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

循环那里应该怎么写?
我想把矩阵A赋值后,将里面的变量也赋值 a1=A(1),循环那部分应该怎么写?
a1=0; a2=0; a3=0;
A=[a1,a2,a3];
A=[1,2,3];
for i=1:3
ai=A(i);
end
a1(:)

没看明白题主的意思——是想要把A(1)~A(3)赋值给a1~a3吗?

 

如果是,用下面的代码就可以:

A=[1,2,3];  
for i=1:3
    assignin('caller',['a' int2str(i)],A(i));
end

参考技术A for i=1:3
eval(['a' num2str(i) '=A(' num2str(i) ')']);
end

matlab处理循环特别慢的问题

用matlab进行PAPR的仿真,里面有两个for循环语句,运行起来特别慢。5分钟一点动静没有,CPU使用率100%。想问一下,这与电脑配置有没有关系?就是说如果用一个配置比较好的电脑运行会不会有帮助呢,还是说这是matlab本身的缺陷,与电脑无关?

与电脑有关的,高配置的电脑当然运行快,但是应该从程序本身解决问题,你说用了两个for循环就这样,应该是循环内部代码的问题或者是循环处理的数据太大,建议修改程序 参考技术A matlab尽管本身具有处理循环的能力,但是它的内部机制对于循环的支持并不好,执行速度会比较慢。

要解决这个问题,解决方法有:

1、采用向量方式对数据进行处理。
2、采用C语言与Matlab的混合编程。
参考技术B matlab本身处理循环很慢 ,建议用C
或者把循环变成矩阵操作,matlab对于矩阵操作有独特的优势
参考技术C matlab处理for循环较慢,建议改用C或者用矩阵的形式计算会快

以上是关于matlab 循环赋值问题的主要内容,如果未能解决你的问题,请参考以下文章

matlab 二维矩阵for循环逐行赋值

matlab中后一次循环把前一次循环产生的数组覆盖掉怎么解决

利用matlab对矩阵的特定位置赋值?

matlab中矩阵随机取几个元素赋值

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

matlab用for循环求矩阵乘法