Multiplying even and odd columns separately?

3 Ansichten (letzte 30 Tage)
Joe Smith
Joe Smith am 6 Mär. 2015
Bearbeitet: Stephen23 am 22 Mai 2015
I have a matrix called 'displacements'
It has 50 columns
I want to multiply all the even columns by 5 and all the odd columns by 8
Anyone know a quick way to do this?

Antworten (2)

Stephen23
Stephen23 am 6 Mär. 2015
Bearbeitet: Stephen23 am 22 Mai 2015
You could do this directly using matrix indexing :
>> A = rand(4,50);
>> A(:,1:2:end) = A(:,1:2:end) * 8;
>> A(:,2:2:end) = A(:,2:2:end) * 5;
Or using bsxfun and repmat:
>> B = bsxfun(@times, A, repmat([8,5],1,25));

Giorgos Papakonstantinou
Giorgos Papakonstantinou am 6 Mär. 2015
Here is one way:
A =rand(100, 50);
idx = mod(1:size(A,2), 2) ==1; % logical indexing of the odd numbers
theodd = A(:, idx)*8;
theeven = A(:, ~idx)*5;

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by