2017-07-25 61 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)我想創建一個矩陣,以便稍後繪製它,每次從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,然後第二次迭代取linspace中的下一個值。

我試着看到n_0(i)的值,並且它給了我10次迭代。它給了我更多的覆蓋。

+0

您創建了使用功能和......不要將其命名功能後變量變量「和(我)」。此外,l(i)不應該在k和j循環中,因爲它不會隨着這些迭代而改變。 l(1)是一個值,所以l(1)的總和會給你l(1)。你有很多基本的matlab錯誤。 – Flynn

+0

非常感謝 – JFS

+1

請嘗試使用matlab調試器來更好地理解您的代碼,這可以使您自己解決問題或提出更好的問題。你的頭銜(我有一些錯誤_)並沒有說明你的問題。 – 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

謝謝你幫助我。它確實給了我10個值n_0。我收到錯誤消息**在賦值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