MATLAB读取文本数据处理

最近接到了一个小任务,具体要求是计算某地19km和21km高度的风速情况,根据原始的风速数据,算出该地6到9月份吹南风和北风各有多少天,平均的风速是多少,以及标准差等指标。

考虑到MATLAB具有强大的数据处理能力,因此用MATLAB完成了这个题目,程序如下:

%function [daysouth,daynorth,nthvec,sthvec,nthstd,sthstd,nsvec,nsstdvec]=DayOfSouthWind(S1,hlow,hhigh)
function DayOfSouthWindWriteExcel
S1='wind_Malan_SpeedAngle2015060100.dat';
table=zeros(8,8);%初始化风速表
daysouth=0;%南风的天数
daynorth=0;%北风的天数
vecmonth=[];%该月的南北风向平均风速向量,每个元素为一天的平均风速,总共31个
hlow=18500;
hhigh=19500;
for i=0:3%6到9月四个月
    if i==0|i==3 %6月份和9月份都是30天
        mndays=30;
    else
        mndays=31;%7月份和8月份都是31天
    end
    S1(26:27)=num2str(i+6,'%0.2d');%更新月份
    for j=0:6:18%00时刻,06时刻,12时刻,18时刻
        S1(30:31)=num2str(j,'%0.2d');%更新时刻
        for k=1:mndays
            S1(28:29)=num2str(k,'%0.2d');
            A=load(S1);
            index=find(hlow<A(:,1)&A(:,1)<hhigh);%找到高度向量中hlow~hhigh范围的所有高度的下标    
            vecArray=A(index,2).*cosd(A(index,3));%hlow~hhigh范围的南北风向风速向量
            vec=mean(vecArray);%该时刻19公里附近的南北风向平均风速
            vecmonth=[vecmonth vec];
            if vec>0
                daynorth=daynorth+1;
            else
                daysouth=daysouth+1;
            end
        end
        vecnthmon=vecmonth(find(vecmonth>0));%该月北风平均风速数组
        vecsthmon=vecmonth(find(vecmonth<=0));%该月南风平均风速数组
        table(i*4+j/6+1,1)=daysouth;%该月南风天数
        table(i*4+j/6+1,2)=daynorth;%该月北风天数
        table(i*4+j/6+1,3)=mean(vecsthmon);%该月南风平均风速
        table(i*4+j/6+1,4)=mean(vecnthmon);%该月北风平均风速
        table(i*4+j/6+1,5)=std(vecsthmon);%该月南风风速标准差
        table(i*4+j/6+1,6)=std(vecnthmon);%该月北风风速标准差
        table(i*4+j/6+1,7)=mean(vecmonth);%该月南北方向总平均风速
        table(i*4+j/6+1,8)=std(vecmonth);%该月南北方向风速标准差
        daynorth=0;
        daysouth=0;
        vecmonth=[];
    end
end
xlswrite('C.xls',table,'Sheet1','B2:I17');

hlow=20500;
hhigh=21500;
for i=0:3%6到9月四个月
    if i==0|i==3 %6月份和9月份都是30天
        mndays=30;
    else
        mndays=31;%7月份和8月份都是31天
    end
    S1(26:27)=num2str(i+6,'%0.2d');%更新月份
    for j=0:6:18%00时刻,06时刻,12时刻,18时刻
        S1(30:31)=num2str(j,'%0.2d');%更新时刻
        for k=1:mndays
            S1(28:29)=num2str(k,'%0.2d');
            A=load(S1);
            index=find(hlow<A(:,1)&A(:,1)<hhigh);%找到高度向量中hlow~hhigh范围的所有高度的下标    
            vecArray=A(index,2).*cosd(A(index,3));%hlow~hhigh范围的南北风向风速向量
            vec=mean(vecArray);%该时刻19公里附近的南北风向平均风速
            vecmonth=[vecmonth vec];
            if vec>0
                daynorth=daynorth+1;
            else
                daysouth=daysouth+1;
            end
        end
        vecnthmon=vecmonth(find(vecmonth>0));%该月北风平均风速数组
        vecsthmon=vecmonth(find(vecmonth<=0));%该月南风平均风速数组
        table(i*4+j/6+1,1)=daysouth;%该月南风天数
        table(i*4+j/6+1,2)=daynorth;%该月北风天数
        table(i*4+j/6+1,3)=mean(vecsthmon);%该月南风平均风速
        table(i*4+j/6+1,4)=mean(vecnthmon);%该月北风平均风速
        table(i*4+j/6+1,5)=std(vecsthmon);%该月南风风速标准差
        table(i*4+j/6+1,6)=std(vecnthmon);%该月北风风速标准差
        table(i*4+j/6+1,7)=mean(vecmonth);%该月南北方向总平均风速
        table(i*4+j/6+1,8)=std(vecmonth);%该月南北方向风速标准差
        daynorth=0;
        daysouth=0;
        vecmonth=[];
    end
end
xlswrite('C.xls',table,'Sheet1','B19:I34');

风速原始数据文件列表如图:

运行MATLAB程序即可自动将结果写到EXCEL文档里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值