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

在matlab中是否可以将矩阵旋转45度,matlab,matrix,orientation,Matlab,Matrix,Orientation,i、 使它看起来像一颗钻石。(这是一个正方形矩阵)每行比前一行多1个元素,直到中间一行的元素数量等于原始矩阵的尺寸,然后再向下,每行返回1?旋转当然是不可能的,因为矩阵所基于的“网格”是规则的 但我记得你最初的想法是什么,因此以下内容将帮助你: %example data A = magic(5); A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22

i、 使它看起来像一颗钻石。(这是一个正方形矩阵)每行比前一行多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

将归还钻石:

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

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

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


你是否在询问将矩阵可视化为菱形?
matrix=imrotate(矩阵,45)使用图像处理工具箱?这更能解决使用strfind的单词搜索问题。向前移动很容易,我使用fliplr进行向后移动,使用“上下移动”。但是我看不到任何方法来做4条对角线,除了旋转45度,然后向前、向后、向上和向下做?@AlexandreBizeau这将插入可能不是OP想要的值。也许?这太好了,谢谢。虽然还有一个问题,但我如何删除/不计算零?很高兴我能提供帮助!接受答案会让人们继续这样做;)
rowNoZeros = row( find(row) )

rowNoZeros =

    11    12    13    14    15
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