如何完善我的锯齿形matlab函数?
我被问到以下问题:如何完善我的锯齿形matlab函数?,matlab,matrix,Matlab,Matrix,我被问到以下问题: function B=zigzag(A) [r,c]=size(A); B= reshape(A’,1,:); m=0 n=0 For r>m+2 m=m+2; n=n+1; For i=1:c B(nc+i)=B(2cn-i+1); End End disp(B) 编写一个函数调用zigzag,它接收一个二维数组a,并返回一个由遍历a创建的一维数组,该数组从位置(1,1)开始,以之字形方式开始 例如: A =[1
function B=zigzag(A)
[r,c]=size(A);
B= reshape(A’,1,:);
m=0
n=0
For r>m+2
m=m+2;
n=n+1;
For i=1:c
B(nc+i)=B(2cn-i+1);
End
End
disp(B)
编写一个函数调用zigzag,它接收一个二维数组a
,并返回一个由遍历a
创建的一维数组,该数组从位置(1,1)
开始,以之字形方式开始
例如:
A =[1 2 3 4 5 6
7 8 9 1 3 4
3 4 5 6 3 1
3 4 5 6 7 8]
zigzag(A)
应返回:
[1 2 3 4 5 6 4 3 1 9 8 7 3 4 5 6 3 1 8 7 6 5 4 3]
按照我的解决方法,我不确定这是否是一种正确的方法。我很高兴知道这是否完美,以及如何改进我的答案:
function B=zigzag(A)
[r,c]=size(A);
B= reshape(A’,1,:);
m=0
n=0
For r>m+2
m=m+2;
n=n+1;
For i=1:c
B(nc+i)=B(2cn-i+1);
End
End
disp(B)
如果它给了你正确的输出,那么你肯定在做正确的事情。然而,我要做的是访问矩阵的偶数行,反转方向,使它们以相反的顺序显示,转置矩阵,然后分解它 我们之所以转置它,是因为当我们在MATLAB中分解矩阵时,这意味着矩阵的列相互堆叠,从而生成一个向量。我们希望行堆叠在彼此的顶部,将偶数行按相反顺序排列将允许您实现您期望的之字形。如果要将行堆叠在彼此的顶部,则需要首先转置矩阵,使行成为列,并且在分解此矩阵时,将行堆叠在彼此的顶部,以创建单个向量 大概是这样的:
B = A; %// Make a copy
B(2:2:end,:) = fliplr(B(2:2:end,:)); %// Flip even rows
B = reshape(B.', 1, []); %// Unravel
以你为例,我得到:
B =
Columns 1 through 13
1 2 3 4 5 6 4 3 1 9 8 7 3
Columns 14 through 24
4 5 6 3 1 8 7 6 5 4 3
没问题。祝你好运顺便说一句,如果这是MATLAB代码,它将不会运行。有很多语法错误。