Effacer les filtres
Effacer les filtres

How to simplify matrix expression

4 vues (au cours des 30 derniers jours)
cniv_we
cniv_we le 21 Juin 2016
Commenté : cniv_we le 21 Juin 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 commentaires
John D'Errico
John D'Errico le 21 Juin 2016
Learn to use sparse.
cniv_we
cniv_we le 21 Juin 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?

Connectez-vous pour commenter.

Réponses (1)

John D'Errico
John D'Errico le 21 Juin 2016
Modifié(e) : John D'Errico le 21 Juin 2016
Will one line suffice?
y = sparse((1:5000)',reshape(repmat([10,1:9]',1,500)',[5000,1]),1,5000,10);
  1 commentaire
cniv_we
cniv_we le 21 Juin 2016
That's great! Thanks.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Sparse Matrices dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by