MATLAB: How to initialize matrix values from an array of indices

initializationmatrix

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.

Best Answer

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