2017-02-08 30 views
0

我想繪製一個變量的日誌Dl取決於變量z相對於log(z)。我試圖爲z = 1:100做到這一點,但它僅返回1 Dl數。我無法讓我的函數提供其輸出在一個矩陣

% Log(Dl) versus Log(Redshift) 
m = 1; 
d = 0; 
z = linspace(1,100,1); 
Dl = zeros(1,100); 
for z = 1:100 
    [Dl,Da] = Cosmological(m,d,z); 
end 
y = log(Dl); 
x = log(1:100); 
plot(x,y) 

對任何愚蠢或無用的代碼行表示道歉我對編程非常陌生。我呼籲被寫入如下功能cosmological(但沒有錯誤,所以可能沒有必要,我張貼以防萬一):

function [Dl,Da] = Cosmological(m,d,z) 
f = @(x)1./((1+x).*((m.*(1+z)-m+d.*((1+x).^(-2))-d+1).^(.5))); 
q = integral(f,0,z); % Integral part equations for Dl 
if m+d==1    % flat universe condition 
    Dl=c/H0.*(1+z)*q; 
elseif m+d<1   %positive spatial curvature universe condition 
    Dl=c/H0*(1-m-d)^(-1/2)*(1+z)*sinh((1-m-d)^.5).*q; 
else     % negative spatial curvature universe condition 
    Dl=c/H0*(1-m-d)^(-1/2)*(1+z)*sin((1-m-d)^.5).*q; 
end 
Da = Dl/(1+z)^2;  %Angular diameter distance function 
end 

回答

1

首先,不需要這些行,你分配z1:100在循環:

z = linspace(1,100,1); 

,因爲你的循環中只保留最後一個值你只能得到一個值。您應該索引Dlz像這樣(也可能Da):

for z = 1:100 
    [Dl(z),Da] = Cosmological(m,d,z); 
end 
相關問題