how do I generate a spiral matrix which starts from first element
7 views (last 30 days)
Show older comments
there is a command which takes only one arguement as a dimension of a square spiral matrix.But I need a way to generate such a matrix which takes the numbers of rows and columns as inputs and it might not be a square
1 Comment
darova
on 9 Jun 2019
I don't understand. How this matrix should looks like? Can you please show some scheme?
Accepted Answer
PIYUSH AGGARWAL
on 9 Jun 2019
Edited: PIYUSH AGGARWAL
on 10 Jun 2019
You will have to write your own code for this.
A = zeros(3,6);%You can change this mxn to whatever dims you like, be it square(m=n) or rectangular matrix.
[m,n] = size(A);
%m = no of rows
%n = no of columns
%A = matrix to be filled with spiral values
%This code works fine. I commented an eg also below
top = 1;
bottom = m;
left = 1;
right = n; %To keep track of the four directions
value = 1;%Let us strat from 1
while true
%Top Row First
if left>right
break;
end
for i = left:right
A(top,i) = value;
value = value + 1;
end
top = top + 1;
%Then The RightMost Column
if top>bottom
break;
end
for i = top:bottom
A(i,right) = value;
value = value + 1;
end
right = right - 1;
%Then Bottom Row
if left>right
break;
end
for i = right:-1:left
A(bottom,i) = value;
value = value + 1;
end
bottom = bottom - 1;
%Then The Left Column
if top>bottom
break;
end
for i = bottom:-1:top
A(i,left) = value;
value = value + 1;
end
left = left + 1;
end
A
5 Comments
Arshub
on 16 May 2022
@PIYUSH AGGARWAL Please, I hope that you can help me in modifying your code so that I enter an array from me like A= [2 3 5
12 13 14
19 0 4]
and a spiral display is made for it, then I want another code in which I can retrieve my original array. I would be grateful for your help.
More Answers (0)
See Also
Categories
Find more on Get Started with MATLAB 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!