2011-02-22 43 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')