простой код вероятности в Matlab - PullRequest
0 голосов
/ 21 декабря 2011

Я написал базовый код для вероятности некоторых данных. Он работает и дает мне вывод, что я хочу получить.

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

Ответы [ 3 ]

2 голосов
/ 21 декабря 2011

Вот как вы возвращаете вещи из функции 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);
1 голос
/ 21 декабря 2011

Я думаю, вам просто нужно указать свои выходные переменные. Здесь, я думаю, вы хотите вывести 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
1 голос
/ 21 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...