how can I change a n*1 matrix to a n*6 matrix with a condition based on column value?

1 visualizzazione (ultimi 30 giorni)
Hi, i'm pretty new so any help would be appreciated.
I have 700000*1 matrix with the column values that are between 1 to 6 and i want to make a new matrix of 700000*6 (having 6 colulmns instead of 1) and the values of the columns in new matrix in each row would be 1,0 in a way that 1 would show the value in the original matrix.
for example :
original =
[ 1
2
1
3
5]
and i want the new matrix look like this :
[1 0 0 0 0 0
0 1 0 0 0 0
1 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 1 0]
I've tried by making a blank 700000*6 matrix first but i can't figure out how to put values in the new matrix the way i want.

Risposta accettata

dleal
dleal il 28 Lug 2022
If you have the Statistics and Machine Learning Toolbox you can do use dummyvar:
A = [1,1,2,4,4, 5,6]';
>> dummyvar(A)
ans =
1 0 0 0 0 0
1 0 0 0 0 0
0 1 0 0 0 0
0 0 0 1 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1

Più risposte (1)

David Hill
David Hill il 28 Lug 2022
Modificato: David Hill il 28 Lug 2022
n=randi(6,700000,1);
a=zeros(size(n,1),6);
a(:,n)=1;

Community Treasure Hunt

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

Start Hunting!

Translated by