如何完善我的锯齿形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代码,它将不会运行。有很多语法错误。