How do I initialize matrix values from an array of indices?

The following code:
idx = 1:10:100;
img(idx,idx) = 1;
...yields an array with 100 '1' values in it. The result I'm looking for is an array with a value of 1 only at (1,1), (11,11) ... (91,91). The only way I can find to get the result I want is:
for i=1:length(idx)
img(i,i) = 1;
end
Is there some way to do this without the 'for' loop, since they tend to be less efficient? Thanks.

 Réponse acceptée

Use sub2ind
idx = 1:10:100;
ii=sub2ind(size(img),idx,idx)
img(ii) = 1;

1 commentaire

This is what I was looking for, but didn't know how to word the search, so thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by