gpt4 book ai didi

matlab - 如何完善我的之字形 matlab 函数?

转载 作者:行者123 更新时间:2023-12-01 22:29:41 27 4
gpt4 key购买 nike

我得到了以下问题:

编写一个接受二维数组的函数调用 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 - 如何完善我的之字形 matlab 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30069958/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com