我正在Matlab和我有一个16×16的矩阵,其中列的值是等于行值matrix of nucleotide substitutions如何使用相同的列和行值对矩阵进行整形?
我想重塑,所以我只有1只含有唯一值行(换句话说,我想与行:
7816 0 .... 6432 0 .... 8148 20 .....
我试图B =重塑(基质,1,[]);和它作品,但不幸的是,它给我也非独特的价值观(它基本上是把每一行粘贴在旁边的前一个)
有没有办法做到这一点?谢谢!
我正在Matlab和我有一个16×16的矩阵,其中列的值是等于行值matrix of nucleotide substitutions如何使用相同的列和行值对矩阵进行整形?
我想重塑,所以我只有1只含有唯一值行(换句话说,我想与行:
7816 0 .... 6432 0 .... 8148 20 .....
我试图B =重塑(基质,1,[]);和它作品,但不幸的是,它给我也非独特的价值观(它基本上是把每一行粘贴在旁边的前一个)
有没有办法做到这一点?谢谢!
给定一个对称输入矩阵A
:
>> A = randi(30, 5)
A =
9 13 19 23 8
13 4 5 14 19
16 25 13 11 27
12 3 20 25 11
1 12 9 20 27
>> A = A + A.'
A =
18 26 35 35 9
26 8 30 17 31
35 30 26 31 36
35 17 31 50 31
9 31 36 31 54
>> A(A < 10) = 0
A =
18 26 35 35 0
26 0 30 17 31
35 30 26 31 36
35 17 31 50 31
0 31 36 31 54
可以提取下三角部分,使之成为一个矢量,如下所示:
>> B = A(find(tril(ones(size(A))))).'
B =
18 26 35 35 0 0 30 17 31 26 31 36 50 31 54
注意这个跳过26
在第二列,第二列中的35, 30
,依此类推。
这需要1的矩阵的下三角部分与A的大小相同,并找出所有1个值的索引。 (绕着原始矩阵中的0值)。然后它使用由find
返回的1的位置来索引到原始矩阵A
。转置以使其成为一个行向量。
输出矩阵是否应该有某种顺序?如果订单不重要,请查看https://www.mathworks.com/help/matlab/ref/unique.html。 – akamath
只要它只是一行,就不是真的。我阅读了独特的内容,但其中一些值是相同的(例如0),但并不一定非唯一。输出应该是一行,包含136个值。 – JFGM
我不明白你所期望的输出。对于像“魔法(4)+魔法(4)”这样的小例子,你期望输出什么? – Daniel