- 积分
- 933
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-8-14
- 最后登录
- 1970-1-1
|
100金钱
clc,clear all,dbstop if error
% a=[0 0 0 0 0 1 2 0 0 0 0 20 0 0 0 0 0 3 2 5 4 0 0 0 5]';
% b=[1 2 45 21 1 50 2 3 4 43 5 0 0 2 3 6 45 5 6 8 7 8 65 63 6]';
load P
load R
Rr=Rain;
Pp=PWV;
[hang_1,lie_1]=size(Pp);
New=zeros(5,99);
aa=[New;Rr];
bb=[New;Pp];
[HANG,LIE]=size(aa);
for jj=1:LIE
a=aa(:,LIE);
b=bb(:,LIE);
a_neq_0=a~=0;
k=diff([0;a_neq_0;0]);
ind1=find(k==-1); % 记录一段连续0中的第一个0的位置.假如第一段全为0,那么就记录第二段连续为0的第一个0的位置;
ind2=find(k==1); % 记录一段连续1中的第一个1的位置
m=zeros(6,length(ind1));
ind1=[ind1;0]; % 提示这里会随迭代次数而改变,我感觉是这里出问题了
ind2=[ind2;0];
length(ind1)
C=zeros(30,99);
H=zeros(30,1);
for i=1:length(ind1)
if all(a==1)==1 % 降雨全为1,需要删除数据
p1=0; p2=0; p3=0; p4=0; p5=0;p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif all(a==0)==1 % 降雨全为0,没有下雨的情况
p1=0; p2=0; p3=0; p4=0; p5=0;p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind1(i)-ind2(i)>0 && ind2(i+1)-ind1(i)>2 && ind2(1)>5
p1=b(ind2(i)); p2=b(ind2(i)-1); p3=b(ind2(i)-2); p4=b(ind2(i)-3); p5=b(ind2(i)-4);p6=b(ind2(i)-5);
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif length(ind1)==2 && length(ind2)==2 && ind1(i)-ind2(i)>1 && ind2(1)>5
p1=b(ind2(i)); p2=b(ind2(i)-1); p3=b(ind2(i)-2); p4=b(ind2(i)-3); p5=b(ind2(i)-4);p6=b(ind2(i)-5);
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind1(i)-ind2(i)>1 && ind2(1)>3 && ind2(1)>5
p1=b(ind2(i)); p2=b(ind2(i)-1); p3=b(ind2(i)-2); p4=b(ind2(i)-3); p5=b(ind2(i)-4);p6=b(ind2(i)-5);
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind1(i)-ind2(i)>0 && ind2(1)>5
p1=b(ind2(i)); p2=b(ind2(i)-1); p3=b(ind2(i)-2); p4=b(ind2(i)-3); p5=b(ind2(i)-4);p6=b(ind2(i)-5);
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind2(1)==5 && i==1
p1=b(5); p2=b(4); p3=b(3); p4=b(2); p5=b(1);p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind2(1)==4 && i==1
p1=b(4); p2=b(3); p3=b(2); p4=(b1); p5=0;p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind2(1)==3 && i==1
p1=b(3); p2=b(2); p3=b(1); p4=0; p5=0;p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind2(1)==2 && i==1
p1=b(2); p2=b(1); p3=0; p4=0; p5=0;p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif ind2(1)==1 && i==1
p1=0; p2=0; p3=0; p4=0; p5=0;p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[];
[hang,lie]=size(m);
elseif length(ind1)==1
p1=0; p2=0; p3=0; p4=0; p5=0;p6=0;
m1=[p1,p2,p3,p4,p5,p6]';
m(:,i)=m1;
m(:,all(m==0,1))=[]; % 输出的m矩阵,里面包含了几段连续降雨前的PWV值
[hang,lie]=size(m); % 有lie列就有连续lie段降雨
end
% 计算变化率
for kk=1:lie
p1=m(1,kk);p2=m(2,kk);p3=m(3,kk);p4=m(4,kk);p5=m(5,kk);p6=m(6,kk);
[z,t,bhl,max_p,min_p]=chang(p1,p2,p3,p4,p5,p6);
H(kk,1)=bhl; % 从这里入手
end
% 前面情况会被覆盖
end
C(:,LIE)=H;
F=unique(C); % 删除重复数值
F(F==0)=[];
end
|
-
-
Tq_PWV_1.m
3.86 KB, 下载次数: 0, 下载积分: 金钱 -5
-
-
P.mat
65.5 KB, 下载次数: 0, 下载积分: 金钱 -5
-
-
R.mat
2.19 KB, 下载次数: 0, 下载积分: 金钱 -5
-
-
chang.m
2.5 KB, 下载次数: 0, 下载积分: 金钱 -5
|