Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何对跳转列中的值进行排序?_Matlab - Fatal编程技术网

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

Matlab 如何对跳转列中的值进行排序?,matlab,Matlab,我有一个矩阵25x600,有些列包含正值和负值。我想要这样的输出[+-]四个值,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.3

我有一个矩阵25x600,有些列包含正值和负值。我想要这样的输出[+-]四个值,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
任何帮助都将不胜感激。

查找功能在这里可能很有用,因为它可以帮助您找到函数从正变为负的位置。下表列出了数据最后一个负值的索引ind,此处假设该值为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的值以满足您的需要

谢谢GJStein,我厌倦了你写的东西,但是我得到了空数组,我有25行600列的矩阵,但是我不能把所有的数据都放在发帖问题中。如果你从find函数得到了一个空的返回,这表明你的条件不符合。有没有可能,对于某些列,数据永远不会超过零?谢谢,我希望数组的输出包含4点2负2正,例如,对于第一列,我有数据25,1=[-0.0006662-0.00033225 0.00033638 0.001341 0.0023478 0.0057178 0.012524 0.022899 0.033476 0.070152 0.15002 0.28558 0.43904 1.0598 2.6344 5.3640 8.2462 18.1135 38.0530 68.0307 98.0210 198.0086 397.9984 698.0106 998.0148]我想要输出转换=[-0.0006662-0.00033225 0.00033638]我试着使用你的代码,但我得到了空数组。我已经更新了此代码,使其能够在零上上升。在你的问题中,我理解你表示这是你想要的下降。没问题!如果你愿意的话,也请更新我的评论。