how to change values in matrix by indices

Hi, i need to change all the values in the index where i,j are both even or odd to zero and multiple by 2 all the other. for example:
change
1,2,3
4,5,6
7,8,9
to
0,4,0
8,0,12
0,16,0

1 commentaire

James Tursa
James Tursa le 28 Avr 2015
Modifié(e) : James Tursa le 28 Avr 2015
Sounds like homework. Are you instructed to use any particular method (for loop, logical indexing, etc)?

Connectez-vous pour commenter.

Réponses (4)

Stephen23
Stephen23 le 30 Avr 2015
Modifié(e) : Stephen23 le 30 Avr 2015
You might find toeplitz useful for this:
>> n = 4;
>> toeplitz(mod(1:n,2))
ans =
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
You could use MATLAB's rather powerful indexing ability to solve this problem, in which case you can convert that matrix of ones and zeros to a logical array using logical.
Andrei Bobrov
Andrei Bobrov le 30 Avr 2015
variant:
a = [1,2,3
4,5,6
7,8,9];
[i1,i2] = ndgrid(1:size(a,1));
out = rem(i1+i2,2)*2.*a;
Thorsten
Thorsten le 30 Avr 2015
index = 1:9;
ieven = mod(index, 2) ==0;
index(ieven) = 2*index
index(~ieven) = 0

Catégories

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by