matlab中求卷积,Matlab几种卷积的实现与比较(conv与filter,conv2。。。

matlab中求卷积,Matlab⼏种卷积的实现与⽐较(conv与
filter,conv2。。。
1、MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:建设项目环境影响评价资质管理办法
C = conv2(A,B)
C = conv2(A,B)返回矩阵A和B的⼆维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的⼤⼩为(ma+mb+1)×(na+nb+1)。
2、MATLAB图像处理⼯具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:
Y = filter2(h,X)
其中Y = filter2(h,X)返回图像X经算⼦h滤波后的结果,默认返回图像Y与输⼊图像X⼤⼩相同。例如:
其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调⽤conv2函数进⾏计算。
Fspecial函数⽤于创建预定义的滤波算⼦,其语法格式为:
h = fspecial(type)
h = fspecial(type,parameters)
参数type制定算⼦类型,parameters指定相应的参数,具体格式为:
type='average',为均值滤波,参数为n,代表模版尺⼨,⽤向量表⽰,默认值为[3,3]。
type= 'gaussian',为⾼斯低通滤波器,参数有两个,n表⽰模版尺⼨,默认值为[3,3],sigma表⽰滤波器的标准差,单位为像素,默认值为0.5
最近在做控制
在MATLAB中,可以⽤函数y=filter(p,d,x)实现差分⽅程的仿真,也可以⽤函数 y=conv(x,h)计算卷积。
(1)即y=filter(p,d,x)⽤来实现差分⽅程,d表⽰差分⽅程输出y的系数,p表⽰输⼊x的系数,⽽x表⽰输⼊序列。输出结果长度数等于x的长度。
实现差分⽅程,先从简单的说起:filter([1,2],1,[1,2,3,4,5]),实现y[k]=x[k]+2*x[k-1]
y[1]=x[1]+2*0=1 (x[1]之前状态都⽤0)
除草醚
y[2]=x[2]+2*x[1]=2+2*1=4
(2)y=conv(x,h)是⽤来实现卷级的,对x序列和h序列进⾏卷积,输出的结果个数等于x的长度与h的长度之和减去1。
卷积公式:z(n)=x(n)*y(n)=∫x(m)y(n-m)dm.
程序⼀:以下两个程序的结果⼀样
(1)h = [3 2 1 -2 1 0 -4 0 3];%impulse
response
x = [1 -2 3 -4 3 2 1];%input
sequence
y = conv(h,x);
n = 0:14;
subplot(2,1,1);
stem(n,y);
xlabel('Timeindex n'); ylabel('Amplitude');
title('Output Obtained by Convolution'); grid;
(2)x1 = [x zeros(1,8)];
氨基酸态氮
y1 = filter(h,1,x1);
subplot(2,1,2);
stem(n,y1);
xlabel('Time index n'); ylabel('Amplitude');
title('OutputGenerated by Filtering'); grid;
程序⼆:filter和conv的不同
起凡金戈铁马x=[1,2,3,4,5];
h=[1,1,1];
y1=conv(h,x)
y2=filter(h,1,x)
y3=filter(x,1,h)
结果:y1=1 3 6 9 12 9 5
y2= 1 3 6 9 12
y3 =1 3 6
可见:filter函数y(n)是从n=0开始,认为所有n<0都为0;⽽conv是从卷积公式计算,包括n<0部分。
因此filter 和conv 的结果长短不同
程序三:滤波后信号幅度的变化
num=100; %总共1000个数 x=rand(1,num); %⽣成0~1随机数序列 x(x>0.5)=1; x(x<=0.5)=-1;
h1=[0.2,0.5,1,0.5,0.2]; h2=[0,0,1,0,0];
y1=filter(h1,1,x);
y2=filter(h2,1,x);
n=0:99;
subplot(2,1,1);
等效阻抗stem(n,y1);
subplot(2,1,2); stem(n,y2);
MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:C = conv2(A,B)C =conv2(A,B)返回矩阵A和B的⼆维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的⼤⼩为(ma+mb+1)×(na+nb+1)。
例:A=magic(5)A =17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9>> B=[1 2 1 ;0 2 0;3 13]B =1 2 10 2 03 1 3>>C=conv2(A,B)C =17 58 66 34 32 38 1523 85 88 35 67 76 1655 149 117
163 159 135 6779 78 160 161 187 129 5123 82 153 199 205 108 7530 68 135 168 91 84 933 65 126 85 104 15 27MATLAB图像处理⼯具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:Y = filter2(h,X)其中Y =filter2(h,X)返回图像X经算⼦h滤波后的结果,默认返回图像Y与输⼊图像X⼤⼩相同。例如:其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调⽤conv2函数进⾏计算。Fspecial函数⽤于创建预定义的滤波算⼦,其语法格式为:h = fspecial(type)h = fspecial(type,parameters)参数type制定算⼦类型,parameters指定相应的参数,具体格式为:type='average',为均值滤波,参数为n,代表模版尺⼨,⽤向量表⽰,默认值为
[3,3]。type='gaussian',为⾼斯低通滤波器,参数有两个,n表⽰模版尺⼨,默认值为[3,3],sigma表⽰滤波器的标准差,单位为像素,默认值为0.5杨丽娟近况

本文发布于:2024-09-21 20:31:42,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/475129.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:卷积   函数   滤波   参数   结果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议