如果你要的是符号卷积那就没有直接的功能函数要自己写出卷积表达式,再用符号积分函数去积,经常积不出如果是数值积分(序列)有conv这一族函数(help里面有相关函数那些)其实你要卷积还不如直接去算F变换再去求反变换来的方便
MATLAB实现卷积可以用自带的conv函数,做了个简单的例子如下: clc;clear;close all; %% 卷积程序实例 t=1:10; y1=sin(t);y2=cos(t); y=conv(y1,y2); plot(y,'r--');
function
Convolution();
t=-4:0001:4
e=rectpuls(t-025,15);
plot(t,e),pause
h=tripuls(t-1,2,1);
plot(t,h),pause
s=-8:0001:8
f=conv(e,h);
plot(s,f)
卷积后信号就变长了,如果不想改变信号,改为:f=conv(e,h,'same');
conv是卷积运算,同时也可以做多项式的乘法
C=conv2(A,B)
C=conv2(Hcol,Hrow,A)
C=conv2(,'shape')
说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:
》full 为缺省值,返回二维卷积的全部结果;
》same 返回二维卷积结果中与 A 大小相同的中间部分;
valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(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
可以自己 help conv
至于gggfconv和 ggfconv,matlab 不自带这两个函数,你看到的应该是别人自己写的,用户自定义。
问题比较简单,直接给程序。看不懂再问
a,b是两个向量,N是循环卷积点数,要变动可以自己改
clc;
clear
a=[1
2
3
4
5];
b=[1
1
];
N=3;
tmp=conv(a,b);
if
N<length(tmp)
zeropadding
=
N-mod(length(tmp),N);
tmp=[tmp
zeros(1,zeropadding)];
tmp=reshape(tmp,N,length(tmp)/N);
reshlt
=
sum(tmp,2)'
else
result
=
tmp
end
以上就是关于怎样用matlab求卷积全部的内容,包括:怎样用matlab求卷积、一个简单的求卷积的matlab 谁能指导下啊 不会写 x=sim2t[ε(t)-ε(t-1)] y=、如何用matlab求两个函数的卷积式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)