How can I generate a matrix?

1 visualizzazione (ultimi 30 giorni)
net
net il 20 Nov 2013
Commentato: net il 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.

Risposta accettata

Simon
Simon il 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
  1 Commento
net
net il 20 Nov 2013
Thanks for your help.

Accedi per commentare.

Più risposte (2)

Laurent
Laurent il 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 Commenti
net
net il 20 Nov 2013
Yes you are right, I wrote with wrong parenthesis. Thanks.

Accedi per commentare.


Andrei Bobrov
Andrei Bobrov il 20 Nov 2013
Modificato: Andrei Bobrov il 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 Commenti
net
net il 20 Nov 2013
Thanks for your help.

Accedi per commentare.

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by