如何对跳跃列中的值进行排序?

时间:2015-02-13 16:44:18

标签: matlab

我有一个25x600的矩阵,有些列包含正值和负值。我希望输出像这样[+ + - - ](四个值2正2负2)。我保证在转换之前总是有两个正值,之后立即有两个负值。我的尝试如下:

我的尝试如下:

    clc;
    clear all;
    close all;
    %%
    data=[-0.0059972;-0.004994;-0.0029881;2.0868e-05;
0.0030299;0.013059;0.033115;0.063196;0.093273;0.1935;0.39385;0.69423;0.99448;1.9950;3.99550;6.99550;9.9957;19.9961;39.99620;69.9960;
99.99530;199.99810;399.99140;699.98860;1000.03130]
    for r=1:600
        lam=data(:,r);
        N_lam = length(lam);
        %%
        for j=1:N_lam
            kk=0;
            r1=0;
            if(sign(lam(j))==1)
                kk=kk+1;
                lampos(kk)=lam(j);
                if (length(lampos(kk))>3 &length(lamneg(r1))>2)
                 break
                end
            else
                r1=r1+1;
                lamneg(r1)=lam(j);
            end
        end
        cc{r}=[lampos lamneg];
    end

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

此处find功能可能很有用,因为它可以帮助您找到功能从正变为负的位置。以下定位最后一个负值ind的索引data(假设这里是1D向量),然后才能超过零:

num_rises = 1;
ind = find(data(1:end-1)<=0 & data(2:end)>0, num_dips, 'first')

因此,对于每个列,您会对正值的ind-1,ind,负值和ind+1,ind+2的值感兴趣。

我也不清楚这些4个值中有多少套你感兴趣。要查找数据低于原点的更多区域,请更改num_dips的值以满足您的需要。