2011-12-21 67 views
0

我已經編寫了一些數據的概率的基本代碼。它工作並給出了我想要得到的結果。matlab中的簡單概率代碼

A=[2 3 5 4 4 4 5 2 3 2 3] 
    a=length(A); 
    b=unique(A); 
    for i=1:length(b) 
     T(i)=sum(A(:)==b(i)); 
     prob(i)=T(i)./a; 

    end 

我不明白如何使用此代碼作爲函數。我將以下代碼保存爲M文件,並將其作爲概率(A)用於任何矩陣,但不起作用。你能告訴我我的錯誤嗎?

function z=prob(A) 
a=length(A); 
b=unique(A); 
for i=1:length(b) 
    T(i)=sum(A(:)==b(i)); 
    pr(i)=T(i)./a; 
    z=pr(i); 
end 
return 
    end 
+1

如果允許一個作爲一個矩陣,我會小心使用長度(A)來獲取元素的數量。可以使用[rows colms] = size(A); a = rows * colms。或者,a =長度(A(:)) – Vidar 2011-12-21 16:24:42

回答

1

我想你只需要指定你的輸出變量。 在這裏,我猜你想要輸出pr

所以,你需要在你的第一行指定它:

function [pr]=prob(A) 

和完整的功能將是(你不需要改變任何東西):

function [pr]=prob(A) 
a=length(A); 
b=unique(A); 
for i=1:length(b) 
    T(i)=sum(A(:)==b(i)); 
    pr(i)=T(i)./a; 
end 
+0

非常感謝你的回答:)我在你的幫助下得到了它......這裏是:'function [pr] = prob(A) a = length(A); b =唯一(A);對於i = 1: :長度(b) T(i)= sum(A(:)== b(i)); pr(i)= T(i)./ a; pr(i)= T 結束' – user1018331 2011-12-21 14:14:46

+0

不客氣。 – Oli 2011-12-21 14:39:02

+0

我已經更新了你所說的答案。 – Oli 2011-12-22 00:13:43

2

這是你如何從MATLAB函數返回的東西:

function [prob count] = calcProb(data, classNo) 
    count = 0; 
    rows = length(data); 
    for i= 1:rows 
     myValue=data(i); 
     if(myValue == classNo) 
     count=count+1; 
     end 
    end 

    prob = count/rows; 

及其相關呼叫

 [PC1 sampleC1]= calcProb(trainY, 0); 
+0

非常感謝:)瞭解創建功能真的很有幫助! – user1018331 2011-12-21 14:15:57

1

確保函數名相同的文件名(沒有.m)存儲該函數。

(另請注意,你可以省略在函數的返回。)