Matrix Manipulation code help

2 views (last 30 days)
Jab
Jab on 24 Feb 2016
Edited: Stephen23 on 24 Feb 2016
I have a training label for 3 different classes in a matrix of size 1*178 example t=[1 1 1 3 1 2 3 1 ... .....]. Anyone please help me to write an efficient code for generating a new matrix of size 3*178 where based on the value in "t", the corresponding location in columns should be 1.
for the above example. the output will be like the following matrix:
[1 1 1 0 1 0 0 1.... 0 0 0 0 0 1 0 0..... 0 0 0 1 0 0 1 0.....]

Accepted Answer

Walter Roberson
Walter Roberson on 24 Feb 2016
[t(:) == 1, t(:) == 2, t(:) == 3]

More Answers (1)

Stephen23
Stephen23 on 24 Feb 2016
Edited: Stephen23 on 24 Feb 2016
For a simple generalized solution use bsxfun:
>> t = [1 1 1 3 1 2 3 1]
>> bsxfun(@eq,(1:3).',t)
ans =
1 1 1 0 1 0 0 1
0 0 0 0 0 1 0 0
0 0 0 1 0 0 1 0

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!