前辈好客气,我觉得可以。为了方便我把本版一个xls读写的例子做了修改。不知道是不是你想要的调用方式?- function xlswt
- %%%%%%%%开始读取原始数据
- clear,clc;
- filename='d:\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文件里,存为xlswt.m。调试的时候个人觉得方便些,用run或者在命令行直接输入xlswt
我用的一般就下边2种方式:
(1)把主程序和子程序都写到一个m文件里(和汇编语言有些类似),适合文件不太长的情形。上边的就是一个例子
(2)主程序写的一个文件里,被调用的子函数写到一起。
不知道其他版友都是怎么做的?欢迎分享啊
原始帖子位置:http://forum.vibunion.com/thread-52855-1-1.html(包含025.xls文件)
[ 本帖最后由 花如月 于 2007-10-13 16:44 编辑 ] |