[英]Changing Array size inside a loop causing Error in matlab
我正在尝试动态设置数组的大小并在其中存储一些值,但这会导致错误。
这是代码,
syms k
x=[1 0 0 1];
y=[];
for b=1:4
step1= x(b)*exp(-2*pi*1i*k*((b-1)/length(x)));
y(b)=step1
end
我想做的是将step1的每个值存储在数组“ y”中。
这是错误,
The following error occurred converting from sym to double:
Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double
array.
If the input expression contains a symbolic variable, use the VPA function instead.
Error in Untitled3 (line 6)
y(K)=1/exp((pi*k*3*1i)/2)
根据您要执行的操作,Matlab难以从双精度符号转换为符号精度,因此您应该从一开始就明确指出y包含符号元素:
syms k y
x=[1 0 0 1];
for K=1:4
step1= x(K)*exp(-2*pi*1i*k*((K-1)/length(x)));
y(K)=step1
end
为什么使用符号变量k
和循环计数器K
是有原因的? 您似乎混淆了两者。 我认为这是您要实现的目标:
x=[1 0 0 1];
y=[];
for k=1:4
y(k)= x(k)*exp(-2i*pi*k*((k-1)/length(x)));
end
注意:使用大型循环时,MATLAB预先分配数组而不是动态调整其大小要快得多。 例如,通过更改y=[];
到y=zeros(1,4);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.