Multiplying even and odd columns separately?

5 views (last 30 days)
Joe Smith
Joe Smith on 6 Mar 2015
Edited: Stephen23 on 22 May 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?

Answers (2)

Stephen23
Stephen23 on 6 Mar 2015
Edited: Stephen23 on 22 May 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 on 6 Mar 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;

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!