Filter löschen
Filter löschen

create a matrix with numbers from vector

1 Ansicht (letzte 30 Tage)
Elysi Cochin
Elysi Cochin am 13 Feb. 2019
Kommentiert: madhan ravi am 13 Feb. 2019
i have a vector as
v = [ 1 1 1 2 2 2 3 3 4]
i wanted to create a new matrix as
M = [
1 1 1 0 0 0 0 0 0;
0 0 0 1 1 1 0 0 0;
0 0 0 0 0 0 1 1 0;
0 0 0 0 0 0 0 0 1];
how to do it?

Akzeptierte Antwort

madhan ravi
madhan ravi am 13 Feb. 2019
v = [1 1 1 2 2 2 3 3 4];
u=unique(v);
R=arrayfun(@(x)v==u(x),1:numel(u),'un',0);
M=+vertcat(R{:})
Gives:
M =
1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 1

Weitere Antworten (2)

madhan ravi
madhan ravi am 13 Feb. 2019
Simpler:
M = +(v==unique(v).')
  2 Kommentare
Stephen23
Stephen23 am 13 Feb. 2019
+1 very tidy. I like that.
madhan ravi
madhan ravi am 13 Feb. 2019
Thank you!

Melden Sie sich an, um zu kommentieren.


KSSV
KSSV am 13 Feb. 2019
N = zeros(3,3,3) ;
for i = 1:3
N(i,:,i) = 1 ;
end
M = reshape(N,3,[])
  2 Kommentare
KSSV
KSSV am 13 Feb. 2019
Give Example....by the way what is use of v here?
KSSV
KSSV am 13 Feb. 2019
v = [ 1 1 1 2 2 2 3 3 4] ;
v = reshape(v,[],3)' ;
N = zeros(3,3,3) ;
for i = 1:3
N(i,:,i) = v(i,:) ;
end
M = reshape(N,3,[])

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by