我有一个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
非常感谢任何帮助。
答案 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
的值以满足您的需要。