2014-05-06 41 views
0

我有兩個問題,我非常需要幫助,所以我在這裏發佈。如何將多個相似的輸出轉換爲單個輸出數組?

我知道這聽起來可能聽起來像是一個很多問題,但我在研究中沒有發現任何類似的問題。

我試圖獲得結果的整行,使用此代碼:

mu = [0 0]; 
sigma = [1 0.3; 0.3 1]; 

    for r1 = 1:7; 
     r2 = 1; 

     xu = [r1+1, r2+1]; 
     xl = [r1, r2]; 

     p1 = mvncdf(xl,xu,mu,sigma) 
    end 

什麼,我想說的是,對於每一個值R1需要,R2(1至7)將假設值1,並且我想爲這7個組合生成值。當我運行該腳本,我得到excatly我想要的值,但以這種形式:

p1 = 

    0.0301 


p1 = 

    0.0062 


p1 = 

    4.5904e-04 


p1 = 

    1.2186e-05 


p1 = 

    1.1389e-07 


p1 = 

    3.7054e-10 


p1 = 

    4.1622e-13 

之後,當我去我的工作區,我有一個變量有名爲P1,但僅相當於生成的最後一個值 - 在本例中爲4.1622e-13。是否有可能使用7個數字生成一個數組?

我的第二個問題與此相關。正如你所看到的,我使用範圍從1到7的r1,而r2的值爲1.事實是,我想評估它們的所有組合,r2也是從1到7,但我正在手動完成,與其他7個類似的代碼段,每個代碼的值爲r2。是否可以組合所有內容並將其編碼,以便根據所有組合生成值矩陣?我知道這可能會更困難,我更關心第一個問題。

回答

0

對於你的第一個問題,你要創建p1值的矢量,所以只需修改你的代碼是這樣的:

p1(r1) = mvncdf(xl,xu,mu,sigma) 

,當r1=1,你第一次循環,就會把結果進p1的第一個元素等等。

對於你的問題的第二部分,你可以嵌套另一個for循環,如下:

for r1 = 1:7; 
    for r2 = 1:7; 
     xu = [r1+1, r2+1]; 
     xl = [r1, r2]; 

     p1(r1,r2) = mvncdf(xl,xu,mu,sigma) 
    end 
end 

,現在你將有一個矩陣p1其中,例如,在入口(4,6 )位置對應於r1=4r2=6

它是可以壓縮這一點,

r1=1:7; 
r2=1:7; 
[R1,R2]=meshgrid(r1,r2); 
p1=arrayfun(@(r1,r2) mvncdf([r1 r2],[r1+1 r2+1],mu,sigma),R1,R2) 

,但沒有真正這樣做的必要。

+0

非常感謝,它解決了我的問題! – user3610083

+0

好聽。請將此答案標記爲已接受,以便其他人知道此問題已得到解決。 – David

相關問題