繁体   English   中英

在循环内更改数组大小导致Matlab错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM