2012-04-24 18 views
0

配列のサイズを動的に設定して値を格納しようとしていますが、エラーが発生しています。ここ 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 

は「Y」配列のSTEP1の各値を格納することで、コードです。ここ

とは誤差である、

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) 

答えて

1

y=[];を変更することによって例えば、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 
+0

を避けるために、「B」によって小さな「K」を交換した2つの異なる変数でした象徴的に?それはその言葉に記号「k」があるからですか? –

+1

正確には、kをyに入れたときには、シンボリック(syms) – Rasman

+0

になりますが、それは良い方法ではありませんが、プログラムは正常に実行されますが、エラーはコードに残っています どうpre- sym変数とあらかじめ定義された配列サイズのメモリ? –

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=zeros(1,4);

+0

が事前に割り当てているメモリの事をした、それはkおよびKところで を動作しませんでした私は行く必要がない理由私は今、混乱 –

関連する問題