我正在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