2017-02-08 5 views
0

Dlのログをプロットしたいのですが、変数zの値はlog(z)です。私はz = 1:100のためにこれをしようとしていますが、それはDlのための1つの番号を返します。マトリックスの出力を提供する機能がうまくいきません

% 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

、これらの行を必要としない、あなたはzを割り当てますループ内1:100て:あなたのループは最後の値だけが保存されますので、

z = linspace(1,100,1); 

あなたは一つの値だけを取得します。

for z = 1:100 
    [Dl(z),Da] = Cosmological(m,d,z); 
end 
:あなたはこのよう z(そしておそらくも Da)とインデックス Dlべき
関連する問題