Create a matrix with elements clockwise
조회 수: 2 (최근 30일)
I would like to create a [m,n] size matrix in which the ID of the elements are created clockwise/counterclockwise.
The first element should starts in (1,1).
For example, for a matrix of size [5,8] (meaning 40 elements in total) we should have this final matrix:
This should be the result in Matlab:
Thank you in advance for your answers !
추가 답변 (1개)
Joseph Cheng 2021년 6월 16일
While probably not the most efficient way you can fill in edges like i've done here:
x = zeros(5,8); %generate matrix to be filled with 0's
totN = numel(x);
indexes = 1:totN; %get values to fill in the spiral, here 1:total number for review
cnum=1; %column number to fill in
while numel(indexes)~=0 %while there is still numbers to fill in
for ind = 1:4 %rotate 4 times for 4 edges before next spiral in
zindex = find(x(:,cnum)==0); %for the leading left hand edge see which values are 0
x(zindex,cnum)=indexes(1:numel(zindex)); %fill in where there are 0's by the next 1:#zeros
indexes(1:numel(zindex))=; %remove values used from the list
x = rot90(x,-1); %rotate whole matrix so we're just working on a consistant edge
disp(x) %display matrix
cnum=cnum+1; %now we've rotated 4 times we're back to original orientation and need to spiral in (next col over)