2016-08-15 66 views
1

我使用下面的函數:具有較大mu和sigma值的概率密度函數?

pd=makedist('normal',mu,sigma); 
y = pdf(pd,speed) 

musigma大小爲50X1和X大小3000x1。一次傳遞一個mu,sigma和speed的值,我得到輸出。但是,我怎樣才能同時傳遞所有這些值,以便在最後我會得到一個包含所有y值的數據集?我想我不得不使用for循環,但我不確定如何去做。

+0

ohh sry我沒有意識到我做到了這一點(我是這個stackflow的新手).....請再次給我這個選項。我會接受它。 –

回答

0
mu = rand(50,1); 
sigma = rand(50,1); 
speed = rand(3000,1); 
y = zeros(numel(mu),numel(speed)); 

for k = 1:numel(mu) 
    pd = makedist('normal',mu(k),sigma(k)); 
    y(k,:) = pdf(pd,speed); %store in for loop 
end 

通過初始化輸出可以很容易地雙循環計算所有組件。您的輸出現在索引爲y(mu/sigma,speed),因此第一個索引對應於mu/sigma對,第二個對應於speed使用的條目。

+0

感謝您的幫助,但在matlab中運行此代碼示例時遇到以下錯誤'發生從prob.NormalDistribution轉換爲double的以下錯誤: 從prob.NormalDistribution轉換爲double是不可能的。任何解決方案.. ?? –

+0

哦,這意味着你不能這樣真正得到'pd'。你想擁有'pd'嗎,還是隻有'y'值?只有'y'值更容易。我改變了代碼不保存'pd' – Adriaan

+0

我最後需要y值,因爲y值會給我輸出。但是如何在沒有pd值的情況下獲得y值,因爲你可以看到兩者都是相關的......? –