Perform Operation Only on Specified Rows.

2 次查看(过去 30 天)
Ellie
Ellie 2015-7-30
编辑: dpb 2015-7-31
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

回答(1 个)

dpb
dpb 2015-7-31
编辑:dpb 2015-7-31
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

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by