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

1 vue (au cours des 30 derniers jours)
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.

Réponse acceptée

dleal
dleal le 28 Juil 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

Plus de réponses (1)

David Hill
David Hill le 28 Juil 2022
Modifié(e) : David Hill le 28 Juil 2022
n=randi(6,700000,1);
a=zeros(size(n,1),6);
a(:,n)=1;

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by