matlabfilter函数怎么用 matlab的filter函数
matlab的gaussfilter在哪个工具箱
gaussfilter not found.
matlabfilter函数怎么用 matlab的filter函数
matlabfilter函数怎么用 matlab的filter函数
matlabfilter函数怎么用 matlab的filter函数
Use the Help browser search field to search the documentation, or
type " " for command options, such as forlength(f)=length(a) mods.
说明:gaussfilter不是matlab的函数,不能用作函数。但,高斯滤波是有的,可用下面语句生成:
H = fspecial('gaussian',HSIZE,SIGMA);生成一个旋转对称高斯低通滤波器,HSIZE说明H的行、列数,SIGMA是标准偏,默认HSIZE=[3 3],SFsf=fft(sf,512);%滤波后的信号频域图IGMA是0.5。
用matlab设计滤波器
这个信号的频率分量分别为30、150和600Hz,因此可分别设计一个低通、带通和高通的滤波器来提取。以FIR滤波器为例,程序如下:
clear;fs=2000;t=(1:1000)/fs;
L=length(x);N=2^(nextpow2(L));Hw=fft(x,N);
figure(1);subplot(2,1,1);plot(t,x);
grid on;title('滤波前信号x');xlabel('时间/s');% 原始信号
subplot(2,1,2);plot((0:N-1)fs/L,abs(Hw));% 查看信号频谱
grid on;title('滤波前信号频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');
%% x_1=10cos(2pi30t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量
[函数格式:H = fspecial('log',hsize,sigma)N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh1=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_1=filter(hh1,1,x);% 滤波
x_1(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_1);N=2^(nextpow2(L));Hw_1=fft(x_1,N);
figure(2);subplot(2,1,1);plot(t(1:L),x_1);
grid on;title('x_1=10cos(2pi30t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)fs/L,abs(Hw_1));% 查看信号频谱
grid on;title('滤波后信号x_1频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');
%% x_2=cos(2pi150t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量
mags=[0,1,0];% 带fcuts=[60,100];% 边界频率通
fcuts=[80,120,180,220];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_2=filter(hh2,1,x);% 滤波
x_2(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_2);N=2^(nextpow2(L));Hw_2=fft(x_2,N);
figure(3);subplot(2,1,1);plot(t(1:L),x_2);
grid on;title('x_2=cos(2pi150t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)fs/L,abs(Hw_2));% 查看信号频谱
grid on;title('滤波后信号x_2频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');
%% x_3=5cos(2pi600t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1)];% 计算偏移量
mags=[0,1];% 高通
fcuts=[500,550];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_3=filter(hh2,1,x);% 滤波
x_3(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_3);N=2^(nextpow2(L));Hw_3=fft(x_3,N);
figure(4);subplot(2,1,1);plot(t(1:L),x_3);
grid on;title('x_3=5cos(2pi600t)');xlabel('时间/s');
MATLAB的问题
subplot(2,1,2);plot((0:N-1)fs/L,abs(Hw_3));% 查看信号频谱W应该是一个长度501的行向量。因为定义表明W和k尺寸相同。
n=-20:120;fliplr(W) 等价于 W(end:-1:1), W(2:501)等价于W(2:end)
因此W=[-fliplr(W),W(2:501)];的作用是以W的个元素为中心,往左边轴对称一下。
matlab 滤波
function [x,n]=impseq(n0,n1,n2)您好,首先关于fspecial函数的定义,fspecial函数用于建立预定义的滤波算子。
3.一个很重要的建议:等你已经有所见效了,去上个VB的高级补习班.打个比喻:工夫练的,也得有个人来帮你打通经脉啊...其语法格式为:
h = fspecial(type)
h = fspecial(type,para)
函数type的类型有:
1、'erage'eraging filter为均值滤波,参数为hsize代表模板尺寸,默认值为[3,3]。
函数格式:H = fspecial('erage',hsize)
2、 'disk'circular eraging filter为圆形区域均值滤波,参数为radius代表区域半径,默认值为5。
3、'gaussian'Gaussian lowpass filter为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准值,单位为像素,默认值为0.5。
函数格式:H = fspecial('gaussian',hsize,sigma)
4、'laplacian' filter approximating the 2-D Laplacian operatorlaplacian filter为拉普拉斯算子,参数alpha用于控制算子形状,取值范围为[0,1],默认值为0.2.
函数格式:H = fspecial('laplacian',alpha)
5、'log'Laplacian of Gaussian filter为拉普拉斯高斯算子,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准,单位为像素,默认值为0.5。
关于matlab用IIR低通滤波器对信号进行滤波去噪问题
b=[0.0181,0.0543,0.0543,0.0181]; %其实虚线框中的这部分的作用和上面函数中的FILTER函数的作用一样,就是构造一个滤波器,H(z)还是b为分母,a为分子这个我刚好做过一个滤波器,事实上对时域信号做FFT,截取一定点数再做逆FFT相当于理想滤波。设计滤波器代码如下:
f1=100;f2=a=[1,-1,0.9]; %通过a,b构造了一个滤波器,传递函数为H(z)=1/(1-z^(-1)+0.9z^(-2)),a构造分母,b构造分子200;%待滤波正弦信号频率
fs=2000;%采样频率
m=(0.3f1)/(fs/2);%定义过度带宽
M=round(8/m);%定义窗函数的长度
N=M-1;%定义滤波器的阶数
b=fir1(N,f2/fs);%使用fir1函数设计滤波器
%输入的参数分别是滤波器的阶数和截止频率
figure(1)
[h,f]=freqz(b,1,512);%滤波器的幅频特性图
%[H,W]=freqz(B,A,N)当N是一个整数时函数返回N点的频率向量和幅频响应向量
plot(ffs/(2pi),20log10(abs(h)))%参数分别是频率与幅值
xlabel('频率/赫兹');ylabel('增益/分贝');title('滤波器的增益响应');
figure(2)
subplot(211)
t=0:1/fs:0.5;%定义时间范围和步长
s=sin(2pif1t)+sin(2pif2t);%滤波前信号
plot(t,s);%滤波前的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波前时域图');
subplot(212)
Fs=fft(s,512);%将信号变换到频域
AFs=abs(Fs);%信号频域图的幅值
f=(0:255)fs/512;%频率采样
plot(f,AFs(1:256));%滤波前的信号频域图
xlabel('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');
figure(3)
sf=filter(b,1,s);%使用filter函数对信号进行滤波
%参数分别为滤波器系统函数的分子和分母多项式系数向量和待滤波信号输入
subplot(211)
plot(t,sf)%滤波后的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波后时域图');
axis([0.2 0.5 -2 2]);%限定图像坐标范围
subplot(212)
AFsf=abs(Fsf);%信号频域图的幅值
f=(0:255)fs/512;%频率采样
plot(f,AFsf(1:256))%滤波后的信号频域图
MATLAB如何实现自定义参数的滤波器性能的测试
f: 指定归一化的各频带边界频率,从0到1递增, 1对应fsam/2,即巴特沃斯低通滤波器去噪
grid on;title('滤波后信号x_3频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');我想问一下:怎么用matlab编写函数对图像进行高斯滤波以去除噪声?
函数格式:H = fspecial('disk',radius)如何学好VB
一.VB是什么?
VB
是Visual
Basic编程语言
编写计算机程序需要使用计算机编程语言。计算机编程语言是人和计算机“对话”的桥梁。就像人类的语言一样,计算机编程语言也有很多。目前较为广泛使用的语言有“C++”、“Pascal”、“Basic”等。在众多的计算机编程语言中,以BASIC语言为易学易用。
BASIC是英文Beginner’s
All
pure
Symbolic
Instruction
Code的缩写,意思为初学者通用符号指令代码,一直都是程序设计入门的语言。
二.学VBmags=[1,0];% 低通有什么用?
VB能做很多东西,只要你想去做。
应用程序。数据库程序。只要能想得到的基本上都可以。但是像作系统等大型复杂的编程现在一般都用C来编的。用VB很难做得到。要做程序员,单单只会VB还不行。多学点其他的。比如ASP数据库。NET。这样才做出更好的东西来
三.如何学好VB
VB是一种很容易上手的语言,属于典型的入门容易,精通很难。
在现在,VB仍然是世界上应用广泛的语言.比较适合的领域是C/S架构的MIS,衍生语言VBScript又是一种非常适合B/S架构MIS等的语言,他的简单和易修改非常适合管理系统需求多变的情况.对数据库的支持也很好,有MS在后面支持,你还担心什么,不过任何语言都在进化,VB也不例外,LZ可以以现在的基础学习架构,适应发展的需要.
如果你是一巧不通的话,我可以介绍一个学习的方法:
1.先看看书,大致的了解了一些基本的东西,不至于"盲人摸象"
2.从小东西学起(一切在于实践),例如:VB
的三角函数啊.时钟啊.我想在书中是会有的.也可以看看网上的教程...
4.建议看的书:
(1)《看实例学编程--Visual
Basic程序设计》
__西安电子科技大学出版社
(2)机械工业出版社出的曹青,邱李华,郭志强编著的VB程序设计教程
关于matlab的两个小程序的解释说明
其中type指定算子的类型,para指定相应的参数;好久没做过这类地解答了,希望我说的还算明白
axis([0,1,0,1]); %调节坐标轴范围_________________________
function pr1()
%11分方程
b=1;
h=filter(b,a,x); %以a,b构造的的滤波器,当输入为x时,输出为h,因为x是单位冲击函数,所以h就是该滤波器的单位冲击响应了
figure(1)
stem(n,h); %以n为横轴,h为纵轴画出火柴杆图
title('冲激响应');
ylabel('h(n)');
%figure(2)
[z,p,g]=tf2zp(b,a) % [Z,P,K] = TF2ZP(NUM,DEN) finds the zeros, poles, and gains:
% (z-z1)(z-z2)...(z-zn)
% H(z) = K ------------------------
% (z-p1)(z-p2)...(z-pn)
zplane(z,p) %画出极零图
n=[n1:n2];
x=[(n-n0)==0];
function pr2()
%12 experiment
__________________________________________
a=[1.000,-1.76,1.1829,-0.2781];
m=0:length(b)-1;
l=0:length(a)-1;
K=500;
k=1:K;
w=pik/K;
H=(bexp(-jm'w))./(aexp(-jl'w)); %求出单位冲击响应函数
__________________________________________________________________________________
magH=abs(H); %求出单位冲击响应函数的幅值
angH=angle(H); %求出单位冲击响应函数的相位
figure(1)
subplot(2,1,1); %做出子图
plot(w/pi,magH);
grid; %添加栅格
xlabel('w(pi)');
ylabel('|H|');
title('幅度,相位响应');
subplot(2,1,2);
plot(w/pi,angH);
grid;
xlabel('w(pi)');
ylabel('angle(H)');
matlab滤波器fir2函数的使用 请matlab专业人事来解答一下 感谢~~~
从图上可以看出巴特沃斯低通滤波器对信号一的滤波效果还是可以的,主要是因为有效的信号频率才30Hz,本程序将50Hz以上的信号全部滤除,通过的频率成分中仍然是有白噪声的。数字x=10cos(2pi30t)+cos(2pi150t)+5cos(2pi600t);频率。
m: 指定各频带边界频率处的幅度响应, 因此f和m的长度相等,即
matlab函数调用报错Function 'filter' is not defined for values of class 'cell'.
一般参考书都是给出这样定义函数的,然后大家就>> gaussfilter把他直接COPY到command命令行中运行,就会出错。其实一般用到函数都是现在matlaB中打开一些已经写好了头的程序(灰色的,在哪里打开你查一下书,我忘记了),然后把这个Function 函数 去就能用了。
成这样就可以了
Abs=ev3、使用file菜单---generate mfile,命名为mylowfilter。al(stra)
换个名字 不要用filter
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。