|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
这两天帮华工的一个博导用matlab处理工程数据,写了一个读写.xls的程序,现在发上来源程序,仅供初学者参考,敬请高手指教,敬请拍砖
主程序
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear all
%%%%%%%%开始读取原始数据
filename='lb025.xls';%滤波后数据存储的文件名,不要更改.xls后缀
filename2='d:\\025.xls';%将要滤波的文件路径\\不要更改
sheet='4';%读取excel文档名称为4的表单
t=xlsread(filename2,sheet,'a10:a56');%读取a10到a56的数据,可以根据实际情况更改以满足实际需要
y1=xlsread(filename2,sheet,'f10:f56');
t1=0.05:0.05:23.5;%路基宽度根据实际情况更改
t1=t1';
y11=resample(y1,10,1);%按10:1重新采样使曲线更平滑
a1=denoise(y11,5,'db8')%a=denoise(s,lev,INH) s为待滤波信号,lev是分解层数,一般取3~7,INH为滤波小波基可采用db2~db10,sym2~sym8,coif1~coif5,dmey等等
xlswrite(filename,t1,'a1:a470');
xlswrite(filename,a1,'b1:b470');
figure(1);
subplot(3,1,1);plot(t,y1);
title('原始数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
subplot(3,1,2);plot(t1,y11);
title('重采样数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
subplot(3,1,3);plot(t1,a1);
title('滤波数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
y2=xlsread(filename2,sheet,'j10:j56');
y21=resample(y2,10,1);
a2=denoise(y21,5,'db8')
xlswrite(filename,a2,'c1:c470');
figure(2);
subplot(3,1,1);plot(t,y2);
title('原始数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
subplot(3,1,2);plot(t1,y21);
title('重采样数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
subplot(3,1,3);plot(t1,a2);
title('滤波数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
y3=xlsread(filename2,sheet,'n10:n56');
y31=resample(y3,10,1);
a3=denoise(y31,5,'dmey')
xlswrite(filename,a3,'d1:d470');
figure(3);
subplot(3,1,1);plot(t,y3);
title('原始数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
subplot(3,1,2);plot(t1,y31);
title('重采样数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
subplot(3,1,3);plot(t1,a3);
title('滤波数据曲线');
xlabel('观测点位置(m)');
ylabel('沉降量s(mm)');
grid
%%%提取滤波后原始观测位置对应的数据
lbt=xlsread(filename,'sheet1','a1:a470');
lbt1=lbt(10:10:end);
lby1=xlsread(filename,'sheet1','b1:b470');
lby11=lby1(10:10:end);
lby2=xlsread(filename,'sheet1','c1:c470');
lby21=lby2(10:10:end);
lby3=xlsread(filename,'sheet1','d1:d470');
lby31=lby3(10:10:end);
xlswrite(filename,lbt1,'f1:f47');
xlswrite(filename,lby11,'g1:g47');
xlswrite(filename,lby21,'h1:h47');
xlswrite(filename,lby31,'i1:i47');
denoise.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%实现小波去噪
function a=denoise(s,lev,INH)
[c,l]=wavedec(s,lev,INH);
a=wrcoef('a',c,l,INH,lev);
以上两段程序都保存为m文件,后者必须是denoise.m,放在同一个文件夹下面
execl文件,把.doc改为.xls放在d盘根目录下,当然也可以更改源程序放在任意位置,尽量不要放在中文目录下面
[ 本帖最后由 94117239 于 2007-10-9 16:57 编辑 ] |
评分
-
2
查看全部评分
-
|