导航:首页 > 编程语言 > 卷积Matlab编程

卷积Matlab编程

发布时间:2022-08-01 03:44:26

‘壹’ 用MATLAB怎么实现离散信号的卷积啊 编程

在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('Time index 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('Output Generated 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=1开始,认为所有n<1都为0;而conv是从卷积公式计算,包括n<1部分。
因此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 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> B=[1 2 1 ;0 2 0;3 1 3]
B =
1 2 1
0 2 0
3 1 3
>> C=conv2(A,B)
C =
17 58 66 34 32 38 15
23 85 88 35 67 76 16
55 149 117 163 159 135 67
79 78 160 161 187 129 51
23 82 153 199 205 108 75
30 68 135 168 91 84 9
33 65 126 85 104 15 27
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求两个函数的卷积

比如两个信号f1=sin(t)/t和f2=sin(t),我想得到两个函数的卷积式不是不可能不是矩阵
matlab中所有数据都是矩阵表示不信你试试
a=1
size(a)
.

‘叁’ 如何用matlab实现两个函数的卷积运算

在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('Time
index
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('Output
Generated
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=1开始,认为所有n<1都为0;而conv是从卷积公式计算,包括n<1部分。
因此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
15
23
5
7
14
16
4
6
13
20
22
10
12
19
21
3
11
18
25
2
9
>>
B=[1
2
1
;0
2
0;3
1
3]
B
=
1
2
1
0
2
0
3
1
3
>>
C=conv2(A,B)
C
=
17
58
66
34
32
38
15
23
85
88
35
67
76
16
55
149
117
163
159
135
67
79
78
160
161
187
129
51
23
82
153
199
205
108
75
30
68
135
168
91
84
9
33
65
126
85
104
15
27
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中卷积积分公式如何编写计算

你好。
只要使用conv函数就可以了。
例子:
u=ones(1,100);
v=2*u;
w = conv(u,v);
plot(w);

‘伍’ matlab怎样求卷积

function
[f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
%f:卷积积分f(t)对应的非零样值向量
%k:f(t)的对应时间向量
%f1:f1(t)非零样值向量
%f2:f2(t)的非零样值向量
%k1:f1(t)的对应时间向量
%k2:f2(t)的对应时间向量
%p:取样时间间隔
f=conv(f1,f2);
f=f*p;
k0=k1(1)+k2(1);
k3=length(f1)+length(f2)-2;
k=k0:p:k0+k3*p;
subplot(2,2,1)
plot(k1,f1);
title('f1(t)');
xlabel('t');
ylabel('f1(t)');
subplot(2,2,2);
plot(k2,f2);
title('f2(t)')
subplot(2,2,3)
plot(k,f);
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h);
title('f(t)=f1(t)*f2(t)')
xlabel('t');
ylabel('f(t)')
如果你就当这两个都是从1开始的,
直接卷积掉,
结果是5个数,
第一个数就是x(1)*h(1),
这也是你要的卷积当中的一个,
只是在你要的结果里,这个是x(0)*h(-1)
,所以在结果的序号是-1而不是1,
所以你只要把结果平移就可以了
因为matlab不支持负数序号的数组,
所以你最好只是“在心里平移”就好了,
就是说你保存的还是这个结果,
只是写程序的时候记住了,
这个是从-1开始的
你只需要在画图的时候指定横坐标
plot(-1:3,
conv(x,
h))

‘陆’ matlab求卷积

function [f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
%f:卷积积分f(t)对应的非零样值向量
%k:f(t)的对应时间向量
%f1:f1(t)非零样值向量
%f2:f2(t)的非零样值向量
%k1:f1(t)的对应时间向量
%k2:f2(t)的对应时间向量
%p:取样时间间隔
f=conv(f1,f2);
f=f*p;
k0=k1(1)+k2(1);
k3=length(f1)+length(f2)-2;
k=k0:p:k0+k3*p;
subplot(2,2,1)
plot(k1,f1);
title('f1(t)');
xlabel('t');
ylabel('f1(t)');
subplot(2,2,2);
plot(k2,f2);
title('f2(t)')
subplot(2,2,3)
plot(k,f);
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h);
title('f(t)=f1(t)*f2(t)')
xlabel('t');
ylabel('f(t)')
这个程序可以实现任何情况的卷积

‘柒’ matlab卷积函数编写

利用定义

‘捌’ 怎么用matlab求函数卷积

MATLAB里面求卷积可以直接使用函数conv,至于具体如何使用该函数,可以在MATLAB命令行窗口输入 help conv 然后点击回车即可

阅读全文

与卷积Matlab编程相关的资料

热点内容
php的登录界面代码 浏览:989
php开发客户端 浏览:998
theisle测试服怎么搜服务器 浏览:447
广播PDF 浏览:218
单片机编程300例汇编百度 浏览:35
腾讯云连接不上服务器 浏览:223
不能用来表示算法的是 浏览:861
6轴机器人算法 浏览:890
手机主题照片在哪个文件夹 浏览:294
安卓手机后期用什么软件调色 浏览:628
cad修改快捷键的命令 浏览:242
好钱包app怎么登录不了 浏览:859
树莓派都用python不用c 浏览:757
access文件夹树的构造 浏览:662
安卓多指操作怎么设置 浏览:658
linux树形目录 浏览:727
平方根的简单算法 浏览:898
千牛订单页面信息加密取消 浏览:558
单片机自制红外遥控灯 浏览:719
服务器最小配置怎么弄 浏览:853