2011-02-22 46 views
1

如何獲得每個值的大小在矩陣排序,所以:得到一個矩陣的值的大小,並在降序方式MATLAB

0.2964 0.8765 0.3793 
0.6832 -0.4721 0.5571 
-0.6674 -0.0941 0.7387 

轉變?

0.2964 0.8765 0.3793 
0.6832 0.4721 0.5571 
0.6674 0.0941 0.7387 

排序的一個降序的方式,我們做排序(A,「降序」),但我有負值我想有大小,然後排序,可這在一個單一的做指令?? (get magnitudes and sort them in descending order)

所以最後我們得到

0.8765 
0.7387 
0.6832 
0.6674 
0.5571 
0.3793 
0.4721 
0.2964 
0.0941 
+0

你只是想絕對值排序,或者保持有符號數的絕對值,還是其他什麼東西的順序?您的描述不清楚。另外,您是否想要對拼合矩陣(轉換爲矢量),或行或列進行排序? – 2011-02-23 00:02:23

回答

3

這個怎麼樣:

>> a 

a = 

    0.2964 0.8765 0.3793 
    0.6832 -0.4721 0.5571 
    -0.6674 -0.0941 0.7387 

>> temp=sort(abs(a(:)),'descend') 

ans = 

    0.8765 
    0.7387 
    0.6832 
    0.6674 
    0.5571 
    0.4721 
    0.3793 
    0.2964 
    0.0941 
3

使用SORTABS

 
>> x = [0.2964 0.8765 0.3793; 0.6832 -0.4721 0.5571; -0.6674 -0.0941 0.7387] 

x = 

        0.2964     0.8765     0.3793 
        0.6832     -0.4721     0.5571 
        -0.6674     -0.0941     0.7387 

>> sort(abs(x(:)), 'descend') 

ans = 

        0.8765 
        0.7387 
        0.6832 
        0.6674 
        0.5571 
        0.4721 
        0.3793 
        0.2964 
        0.0941 
1

使用abs()功能。

+0

so abs(sort(A,'descend'))??? – cMinor 2011-02-22 23:59:59

+0

@dark:不,反之亦然。你想排序絕對值,沒有找到排序值的絕對值! – 2011-02-23 00:00:41

+0

是的,對不起,huehue :) – cMinor 2011-02-23 00:06:03

4

嘗試sort(abs(A(:)),'descend')