2011-12-21 9 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-файл и назвал его как prob (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 = length (A (:)) – Vidar

ответ

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) = сумма (A (:) == b (i)); pr (i) = T (i) ./ a; конец ' – user1018331

+0

Добро пожаловать. – Oli

+0

Я обновил ответ, как вы сказали. – Oli

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

1

Убедитесь, что имя функции совпадает с именем файла (без .m), в котором функция хранится.

(Также обратите внимание, что вы можете опустить возвращение в вашей функции.)

Смежные вопросы