gpt4 book ai didi

matlab - 是否可以在matlab中将矩阵旋转45度

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:52 24 4
gpt4 key购买 nike

即所以它看起来像一颗钻石。 (它是一个方阵)每行比前一行多 1 个元素,直到中间行的元素数量等于原始矩阵的维度,然后再次向下退回,每行回到 1?

最佳答案

旋转当然是不可能的,因为矩阵所基于的“网格”是规则的。

但我记得您最初的想法是什么,所以以下内容会对您有所帮助:

%example data
A = magic(5);

A =

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

d = length(A)-1;
diamond = zeros(2*d+1);

for jj = d:-2:-d

ii = (d-jj)/2+1;
kk = (d-abs(jj))/2;

D{ii} = { [zeros( 1,kk ) A(ii,:) zeros( 1,kk ) ] };
diamond = diamond + diag(D{ii}{1},jj);
end

将返回钻石:

diamond =

0 0 0 0 17 0 0 0 0
0 0 0 23 0 24 0 0 0
0 0 4 0 5 0 1 0 0
0 10 0 6 0 7 0 8 0
11 0 12 0 13 0 14 0 15
0 18 0 19 0 20 0 16 0
0 0 25 0 21 0 22 0 0
0 0 0 2 0 3 0 0 0
0 0 0 0 9 0 0 0 0

现在您可以再次逐行或逐列搜索单词或模式,只需删除零即可:

假设您提取一行:

row = diamond(5,:)

您可以使用find 提取非零元素:

rowNoZeros = row( find(row) )

rowNoZeros =

11 12 13 14 15

不是真正的钻石,但可能也有用:

(@beaker 评论中的想法。如果他自己发布,我将删除这部分。)

B = spdiags(A)

B =

11 10 4 23 17 0 0 0 0
0 18 12 6 5 24 0 0 0
0 0 25 19 13 7 1 0 0
0 0 0 2 21 20 14 8 0
0 0 0 0 9 3 22 16 15

关于matlab - 是否可以在matlab中将矩阵旋转45度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20380587/

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