2017-07-25 7 views
-1
l_0=1.5; 
l_1=1.6; 
Lambda_min=2*(1+1)*l_0; 
Lambda_max=2*(1+1)*l_1; 
n_0=linspace(2,2.11,10); 
n_1=linspace(2.30,2.50,10); 
for i=1:10 
for j=1:10 
    for k=1:10 
    l(i) = Lambda_min * (Lambda_max/Lambda_min)^(i/10) 

    sum=sum(l) 
    d_0(:,j)= l(i)/((n_0(i)/n_1(i)+1))     
    d_1(:,k)= (n_0(i)/n_1(i))*d_0(:,j) 
    end 
    end 
end 

まず、私はベクトルであるl(i)の値を見つけ、そのベクトルの和を取っていきたいと思います。 d_0(:、j)の場合は2番目に、私は後でプロットできるように行列を作成したいので、毎回l(i)、n_0、n_1と異なる値をとります。 n_0とn_1の値を取ってforループに入れると、論理または整数でなければならないのでインデックスエラーが発生します。Matlab。私はいくつかのエラーがあります

私のマトリックスは上書きされ、避ける方法はわかりません。注意すべき点は、d_0とd_1 n_0とn_1でlinspaceから値を取得することです。たとえば、最初の反復ではn_0 = 2 n_1 = 2.30であり、2回目の反復ではlinspaceの次の値をとります。

私はn_0(i)の値を調べようとしましたが、それは10回の繰り返しを与えます。それは上書きされたことを私にもっと与える。

+0

あなたは、関数の和を使用して変数「の和(I)」を作成...関数の後に変数の名前を指定しないでください。また、l(i)はそれらの反復で変化しないので、kおよびjループ内にあってはならない。 l(1)は1つの値なので、l(1)の合計はl(1)を与えます。あなたは、多くの基本的なMATLABエラーがあります。 – Flynn

+0

ありがとう – JFS

+1

問題を自分で解決するか、より良い質問をするために、コードをよく理解するために、matlabデバッガを使ってみてください。あなたのタイトル(_Iエラーがいくつかあります)はあなたの問題について何も教えていません。 – m7913d

答えて

0

試してみてください。

l_0=1.5; 
l_1=1.6; 

Lambda_min = 4*l_0; 
Lambda_max = 4*l_1; 

n_0 = linspace(2,2.11,10) % don't add semicolon so you can check this is giving 10 values 
n_1 = linspace(2.30,2.50,10) % 

for i=1:10 
    l(i) = Lambda_min * (Lambda_max/Lambda_min)^(i/10) % should give you 10 values 
end 

d_0= l./((n_0./n_1+1)); % This will only give you a vector, not a matrix.    
d_1= (n_0./n_1).*d_0; 

Lsum = sum(l); % should give you one value 
+0

私を助けていただきありがとうございます。それはn_0のために私の10の値を与えます。エラーメッセージが表示されます**割り当てA(:) = Bでは、AとBの要素の数は同じでなければなりません**。 a_new_attempt_to_calculate(行13)のエラー d_1(i)=(n_0(i)/ n_1(i))* d_0(:、i)..また、最後の行Lsum = sum(l)でエラーが発生しました。これはメッセージです**添え字インデックスは正の整数または論理でなければなりません** – JFS

+0

申し訳ありませんが、d_0(i)d_0(:、i)でなければなりません。私は今それを編集します – Flynn

+0

いいえ。ありがとうございます – JFS

関連する問題