How to replace zero with one automatically in MATLAB

1 view (last 30 days)
Hello everyone , i hope you are doing well.
i have the following code in which i create array of 6000x6 manualy and replace zero with one for every 1000 rows
like first column has ones in 1 to 1000, then second column has ones from 1001 to 2000.
I want it to be done by automatically or single line
Can anybody help me
labels=zeros(6000,6);
labels(1:1000,1)=1;
labels(1001:2000,2)=1;
labels(2001:3000,3)=1;
labels(3001:4000,4)=1;
labels(4001:5000,5)=1;
labels(5001:6000,6)=1;

Answers (1)

Stephen23
Stephen23 on 18 Mar 2022
Edited: Stephen23 on 18 Mar 2022
Here are three approaches:
M1 = repelem(eye(6,6),1000,1)
M1 = 6000×6
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
M2 = kron(eye(6,6),ones(1000,1))
M2 = 6000×6
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
C = repmat({ones(1000,1)},1,6);
M3 = blkdiag(C{:})
M3 = 6000×6
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
isequal(M1,M2,M3) % checking
ans = logical
1

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!