Applying a function to each row vector of a matrix
32 views (last 30 days)
Show older comments
I have a function that I want to apply to each row of a 7800x784 matrix. The function returns a scalar and puts it into a 7800x1 matrix. So, each row of the first matrix is computed one by one and the output is sent to the second matrix. s and Ns are both 1x26 matrix. Following is my function:
function [ind] = naive_bayes(X, s, Ns)
prob = zeros(1,26);
x = 1;
y = 1800;
for i = 1:size(s,2)
like = sum(X(x:y,:))/s(1,i);
prob(1,i) = Ns(1,i) * prod((like.^X).* (1-like).^(1-X));
x = y + 1;
y = y +1800;
end
[~,ind] = max(prob);
end
Thank you!
0 Comments
Answers (1)
Walter Roberson
on 7 Apr 2018
Edited: Walter Roberson
on 7 Apr 2018
result = arrayfun(@(ROWIDX) naive_bayes(YourArray(ROWIDX,:)), (1:size(YourArray,1)).');
However, your function has the difficulty that it uses x and y and s without those having been defined.
3 Comments
Walter Roberson
on 7 Apr 2018
result = arrayfun(@(ROWIDX) naive_bayes(YourArray(ROWIDX,:),s,Ns), (1:size(YourArray,1)).');
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!