Perform Operation Only on Specified Rows.

1 view (last 30 days)
Ellie
Ellie on 30 Jul 2015
Edited: dpb on 31 Jul 2015
I have attempted to modify this code that circshifts the even rows a specified number of times, however I would like to make it more general, specifically to shift the first row by 0, the second row by N, the third row by N^2 the, then repeat after N times. Any help would be appreciated. Thanks.
A=randi(9,10,4)
N = 3;
for i = 1:N
idx=i:N:size(A,1)
Ae=A(idx,:);
for jj = i:N^2
Ae1=circshift(Ae,[0 -jj]);
A(i,:)=Ae1;
end
end

Answers (1)

dpb
dpb on 31 Jul 2015
Edited: dpb on 31 Jul 2015
Warning: air code; untested...
k=0; % row counter (or compute on fly from i,j, your choice...)
L=size(A,1);
for i = 1:N:L % over number of sets of N in A
for j = i:N
k=k+1;
if k>L,break,end % done...
A(k,:)=circshift(A(k,:),[0 -j.^N]);
end
end

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!