How can I generate a matrix?

1 view (last 30 days)
net
net on 20 Nov 2013
Commented: net on 20 Nov 2013
Hi, I have two array and I want to generate one matrix according to these arrays.
For example:
a={2,5,2,4,2,3,4,4,8}
b={1,3,1,3,4,2,3,3,2}
Matrix is 2 to 1 -> 1, 5 to 3 -> 1, 2 to 1 -> 2 (again) ...
Output:
Thanks for your helps.

Accepted Answer

Simon
Simon on 20 Nov 2013
Hi!
Loop over your a/b vectors and increase the specified matrix element:
M = zeros(max(a), max(b));
for n = 1:length(a)
M(a(n), b(n)) = M(a(n), b(n)) + 1;
end

More Answers (2)

Laurent
Laurent on 20 Nov 2013
a={2,5,2,4,2,3,4,4,8};
b={1,3,1,3,4,2,3,3,2};
yourmat=zeros(8,5);
for ii=1:length(a)
yourmat(a{ii},b{ii})=yourmat(a{ii},b{ii})+1;
end
Why are you using a cell array for a and b?
  2 Comments
net
net on 20 Nov 2013
Array "a" is my states and "b" is my observations. I want to know that states and observations amount.
Sorry for my english.
net
net on 20 Nov 2013
Yes you are right, I wrote with wrong parenthesis. Thanks.

Sign in to comment.


Andrei Bobrov
Andrei Bobrov on 20 Nov 2013
Edited: Andrei Bobrov on 20 Nov 2013
a=[2,5,2,4,2,3,4,4,8];
b=[1,3,1,3,4,2,3,3,2];
sz = [8 5];
out = nan(sz + 1);
out(2:end,2:end) = accumarray([a(:),b(:)],1,sz);
out(1,2:end) = 1:sz(2);
out(2:end,1) = 1:sz(1);
  2 Comments
Shani
Shani on 20 Nov 2013
Andrei do you know about neural networks?
net
net on 20 Nov 2013
Thanks for your help.

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!