2012-03-09 49 views
0

教師がクラスに与えたコードを使用して区分線形補間のコードを記述しようとしています。先生がforループ内の方程式に問題があるように思えたことに気付く価値があります。そして、私は "A(I)= Bという代入で、BとIの要素の数は同じでなければなりません。 "ループを終了した後。私はすでにエラーを調べて、ある配列の要素を別のサイズの別の要素に合わせようとすることから来ていることを知っていますが、私はMATLABの行列に慣れていません。誰かが私のエラーがどこから来ているのか理解できますか?MATLAB:エラー:A(I)= Bで、BとIの要素数が同じである必要があります

は、ここでは、コードです:1から例えば

EDU>> pts = [-5:1.25:5]; 
EDU>> x = [-5:.01:5]; 
EDU>> length(pts) 

ans = 

    9 

EDU>> x = x'; 
EDU>> size(x) 

ans = 

    1001   1 

EDU>> fpts = 1./(1+pts.^2); 
EDU>> plot(fpts) 
EDU>> deltax = 10/1000 

deltax = 

    0.0100 

EDU>> 1000/8 

ans = 

    125 

EDU>> newF = zeros(size(x)); 
EDU>> for k = 1:9 
for j = 1:125 
newF((k)*125+j) = (fpts(k) + ((x*k*125) + j) + (x*k*125))/(1.25*(fpts(k)- pts(k))); 
end 
end 
??? In an assignment A(I) = B, the number of elements in B and I must be the same. 

答えて

2

k開始、0からそうk-1を開始し、その後、あなたはfpts(k-1)を持っています。ここでエラーが発生します。

編集:これは、質問が100%新しい質問に変更されるまで、質問に対する正解でした。

ヒント(さらに進んでください): 1つの複雑な行にいくつかのエラーがあり、そのエラーの原因がわからない場合は、複数の行に分割してみてください。

0
ラインにおいて

newF((k)*125+j) = (fpts(k) + ((x*k*125) + j) + ... 
        (x*k*125))/(1.25*(fpts(k)- pts(k))); 

x右側に線の左側一方ベクトルを行うベクトル(サイズ1x1001)です。したがって、xをインデックスする必要があります。つまり、xという単一要素のnewFを計算する必要があります。

関連する問題