How to simplify matrix expression

1 view (last 30 days)
cniv_we
cniv_we on 21 Jun 2016
Commented: cniv_we on 21 Jun 2016
I have following matrix expression:
y_ = zeros(5000,10);
y_(1:500,10) = 1;
y_(501:1000,1) = 1;
y_(1001:1500,2) = 1;
y_(1501:2000,3) = 1;
y_(2001:2500,4) = 1;
y_(2501:3000,5) = 1;
y_(3001:3500,6) = 1;
y_(3501:4000,7) = 1;
y_(4001:4500,8) = 1;
y_(4501:5000,9) = 1;
y = y_;
How do I simplify this code under 2 or 3 lines? At the end I just want to have a matrix Y containing 5000x10 elements.
  2 Comments
cniv_we
cniv_we on 21 Jun 2016
I think loop is enough. I tried this:
y = zeros(5000,10);
y(1:500,10) = 1;
j = 500;
for i=1:9
j = 500;
y(i*j+1:(i+1)*j,i) = 1;
y
end
Any more elegent way?

Sign in to comment.

Answers (1)

John D'Errico
John D'Errico on 21 Jun 2016
Edited: John D'Errico on 21 Jun 2016
Will one line suffice?
y = sparse((1:5000)',reshape(repmat([10,1:9]',1,500)',[5000,1]),1,5000,10);

Categories

Find more on Sparse 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!