Matlab 如何对跳转列中的值进行排序?
我有一个矩阵25x600,有些列包含正值和负值。我想要这样的输出[+-]四个值,2个正值,2个负值。我保证在转换之前总是有两个正值,转换之后总是有两个负值。我的尝试如下: 我的尝试如下: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
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]我试着使用你的代码,但我得到了空数组。我已经更新了此代码,使其能够在零上上升。在你的问题中,我理解你表示这是你想要的下降。没问题!如果你愿意的话,也请更新我的评论。