爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4201|回复: 5

[程序设计] 低通滤波

[复制链接]

新浪微博达人勋

发表于 2017-4-25 08:22:18 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
function [smoothed,mse] = lowpass(indata,frequency,iconb,icone)(这里要怎么导入数据?)为何我的matlab运行不了?
%
% [smoothed,mse] = lowpass(indata,frequency,iconb,icone)
% lowpass filter.
% assumes unit time spaced series
%
% lowpass cutoff at f="frequency" (in cycles/time unit)
%
% icon is any one of several possible boundary constraints on the smooth at
% the begin/end x limits
% (0) minimum norm,
% (1) minimum slope
% (2) minimum roughness
%
% The lowpass routine employs a 10 point butterworth filter.

% Rather than implementing contraints (0)-(2) in the frequency domain (as in Park, 1992,
% Ghil et al, 2003) we use the following approximate implementations of the boundary
% constraints
%
% (0) pad series with long-term mean value beyond x boundary
% (1) pad series with values over last 1/2 filter width reflected w.r.t. x
%     [imposes a local maximum/minimum at x boundary]
% (2) pad series with values over last 1/2 filter width reflected w.r.t. x and y (w.r.t. final value)
%     [imposes a point of inflection at x boundary]
%
ipts=10;
fn=frequency*2;
% pad far enough to remove any influence of boundaries of padded series on the interior
npad=3*round(1/fn);
nn=length(indata);
padded(npad+1:npad+nn)=indata;
padded(npad+nn+1:nn+2*npad)=indata(nn);
padded(1:npad)=indata(1);
for j=nn+npad+1:nn+2*npad
   ipad=j-nn-npad;
   if (icone==0)
       apad=mean(indata);
   else if (icone==1)
           apad=indata(nn-ipad);
        else
           apad=2*indata(nn)-indata(nn-ipad);
        end
   end
   padded(j:j)=apad;
end
for j=1:npad
   ipad=j;
   if (iconb==0)
       apad=mean(indata);
   else if (iconb==1)
           apad=indata(npad-ipad+1);
        else
           apad=2*indata(1)-indata(npad-ipad+1);
        end
   end
   padded(j:j)=apad;
end
%
% smoothed=padded;
[b,a]=butter(ipts,fn,'low');
smoothed0=filtfilt(b,a,padded);
smoothed=smoothed0(npad+1:nn+npad)';
%
% determine mse relative to raw data
%
asum = 0.0;
resid=smoothed-indata;
mse=var(resid)/var(indata);


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-25 08:29:31 | 显示全部楼层
这是函数,需要单独保存到某文件,另外在主程序调用

请自行搜索 MATLAB函数使用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-4-25 09:00:10 | 显示全部楼层
weinihou 发表于 2017-4-25 08:29
这是函数,需要单独保存到某文件,另外在主程序调用

请自行搜索 MATLAB函数使用

是保存到mat文件吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-4-25 09:01:49 | 显示全部楼层
Anxiyue_CC 发表于 2017-4-25 09:00
是保存到mat文件吗?

怎么调用?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-25 12:42:12 | 显示全部楼层



这个请自行搜索。。。
MATLAB函数,函数使用

比如最简单的,百度经验里就有诶。。。
https://jingyan.baidu.com/article/4e5b3e1954ed9c91901e240b.html
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-4-25 12:51:00 | 显示全部楼层
weinihou 发表于 2017-4-25 12:42
这个请自行搜索。。。
MATLAB函数,函数使用

好的 谢谢你了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表