0

配列のサイズを動的に設定して値を格納しようとしていますが、エラーが発生しています。

ここにコードがあります、

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)
4

2 に答える 2

1

何をしようとしているのかによって、Matlab は double からシンボリックに移行するのに苦労するため、最初から 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
于 2012-04-24T18:47:28.907 に答える
0

kシンボリック変数とループカウンターを使用している理由はありますKか?2つを混同しているようです。これがあなたが実装しようとしていることだと思います:

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);

于 2012-04-24T18:44:39.647 に答える