如何用MATLAB求两离散序列的卷积和和自相关函数? 求帮忙做matlab的离散卷积

作者&投稿:汗琛 (若有异议请与网页底部的电邮联系)
卷积函数conv()

y = conv(x,h);
自相关函数autocorr()
R = autocorr(x);

如何用matlab 实现自相关和互相关~

1. 首先说说自相关和互相关的概念。

这个是信号分析里的概念,他们分别表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程度,即互相关函数是描述随机信号
x(t),y(t)在任意两个不同时刻t1,t2的取值之间的相关程度,自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2的取值之间的相关
程度。

自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度;互相关函数给出了在频域内两个信号是否相关的一个判断指标,把两测点之间信号的互谱与各自的自谱联系了起来。它能用来确定输出信号有多大程度来自输入信号,对修正测量中接入噪声源而产生的误差非常有效.


事实上,在图象处理中,自相关和互相关函数的定义如下:设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积;设两个
函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。

那么,如何在matlab中实现这两个相关并用图像显示出来呢?

dt=.1;
t=[0:dt:100];
x=cos(t);
[a,b]=xcorr(x,'unbiased');
plot(b*dt,a)
上面代码是求自相关函数并作图,对于互相关函数,稍微修改一下就可以了,即把[a,b]=xcorr(x,'unbiased');改为[a,b]=xcorr(x,y,'unbiased');便可。
2. 实现过程:


在Matalb中,求解xcorr的过程事实上是利用Fourier变换中的卷积定理进行的,即R(u)=ifft(fft(f)×fft(g)),其中
×表示乘法,注:此公式仅表示形式计算,并非实际计算所用的公式。当然也可以直接采用卷积进行计算,但是结果会与xcorr的不同。事实上,两者既然有定
理保证,那么结果一定是相同的,只是没有用对公式而已。下面是检验两者结果相同的代码:
dt=.1;
t=[0:dt:100];
x=3*sin(t);
y=cos(3*t);
subplot(3,1,1);
plot(t,x);
subplot(3,1,2);
plot(t,y);
[a,b]=xcorr(x,y);
subplot(3,1,3);
plot(b*dt,a);
yy=cos(3*fliplr(t)); % or use: yy=fliplr(y);
z=conv(x,yy);
pause;
subplot(3,1,3);
plot(b*dt,z,'r');
即在xcorr中不使用scaling。

3. 其他相关问题:
(1)相关程度与相关函数的取值有什么联系?

相关系数只是一个比率,不是等单位量度,无什么单位名称,也不是相关的百分数,一般取小数点后两位来表示。相关系数的正负号只表示相关的方向,绝对值表示相关的程度。因为不是等单位的度量,因而不能说相关系数0.7是0.35两倍,只能说相关系数为0.7的二列变量相关程度比相关系数为0.35的二列变量相关程度更为密切和更高。也不能说相关系数从0.70到0.80与相关系数从0.30到0.40增加的程度一样大。
对于相关系数的大小所表示的意义目前在统计学界尚不一致,但通常是这样认为的:
相关系数 相关程度
0.00-±0.30 微相关
±0.30-±0.50 实相关
±0.50-±0.80 显著相关
±0.80-±1.00 高度相关

(2)matlab计算自相关函数autocorr和xcorr有什么不一样的?

分别用这两个函数对同一个序列计算,为什么结果不太一样?因为xcorr是没有将均值减掉做的相关,autocorr则是减掉了均值的。而且,用离散信号做自相关时,信号截取长度(采样点N)不一样,自相关函数就不一样。
(3)xcorr是计算互相关函数,带有一个option的参数:
a=xcorr(x,y,'option')
option=baised时,是计算互相关函数的有偏估计;
option=unbaised时,是计算互相关函数的无偏估计;
option=coeff时,是计算归一化的互相关函数,即为互相关系数,在-1至1之间;
option=none,是缺省的情况。
所以想要计算互相关系数,可用'coeff'参数。

用这个xcorr函数作离散互相关运算时要注意,当x, y是不等长向量时,短的向量会自动填0与长的对齐,运算结果是行向量还是列向量就与x一样。
互相关运算计算的是x,y两组随机数据的相关程度,使用参数coeff时,结果就是互相关系数,在-1至1之间,否则结果不一定在这范围,有可能很大也有可能很小,这视乎x, y数据的大小,所以一般要计算两组数据的相关程度,一般选择coeff参数,对结果进行归一化。
所谓归一化简单理解就是将数据系列缩放到-1到1范围,正式的就是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。变换式为X=(X实测--Xmin)/(Xmax-Xmin)。
一般来说选择归一化进行互相关运算后,得到结果绝对值越大,两组数据相关程度就越高。

conv么,刚编好的,拿去

function w=linear_conv(f,g)
len=length(f)+length(g)-1;
fn=zeros(1,len);
gn=zeros(1,len);
fn(length(g):end)=f;
for m=1:length(g)
g1(m)=g(length(g)-m+1);
end
gn(1:length(g))=g1;
for n=1:len
gn1=circshift(gn,[0,n-1]);
w(n)=sum(fn.*gn1);
end

用MATLAB实现常用的离散时间信号及其时域运算
答:用适当的MATLAB语句表示出信号后,就可以利用MATLAB的绘图命令stem来绘出直观的信号波形图,stem是专门用于绘制离散时间信号的。在MATLAB中离散序列的时域运算和变换不能用符号运算来实现,而必须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的相加、相乘,因而参加运算的两序列向量...

用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,[...

怎么在matlab中对离散点进行曲线拟合,求参数!
答:拟合出f(x)分布的系数 然后,根据xy分别是离散点的横纵坐标(数值至少10组以上)首先,进行参数估计 p(Xn;P)*p(X2。然后求一个P。不妨假设有高斯噪声干扰ML估计是这个意思,现在只需要写出上面的概率密度函数就可以了。按你的模型,数据X的分布是与参数有关的.,理想情况下数据y是由完全由参数...

如何用matlab求离散型数值的导数
答:MATLAB中没有直接提供求数值导数的函数,只能通过差分估算。DX=diff(X) 计算向量X的向前差分,DX(i)=X(i+1)-X(i),0<i<n。t=[0:0.04:1.48];y=[7.86 7.84 7.82 7.77 7.72 7.68 7.61 7.51 7.42 7.33 7.21 7.07 6.94 6.79 6.64 6.48 6.29 6.11 5.92 5....

离散序列怎么求幅频特性和相频特性 matlab
答:幅频特性和相频特性一般描述的是某一数字信号系统的性质,例如我们说滤波器网络的幅频特性。可以根据系统函数在S平面的零极点分布绘制幅频特性和相频特性曲线。楼主的问题应该有问题,离散序列可以绘制的是幅度和相位的波形。MATLAB中分别用 abs(x)和(180/pi)*angle(x)来求,然后用stem杆图绘制。给你...

matlab离散数据的常微分方程求解
答:首先,用dslve()函数求解人口模型的常微分方程 dsolve('DN=r*N','N(t0)=N0')ans = (N0*exp(r*t))/exp(r*t0)第二,根据N和t的离散数据,用lsqcurvefit()拟合函数,拟合出N0 和 r系数值 N=[]t=[]fun=@(a,x)(a(1)*exp(a(2)*t))/exp(a(2)) %t0=1 a=lsqcurvefit(fun,t0...

采集到两组离散数据,要分析频谱,怎样用matlab进行傅里叶变换,跪求程序...
答:y=(2*(abs(fft(sig,N)))/N); %换算成实际的幅度 f=(0:N-1)*fs/N; %设置频率轴(横轴)坐标 plot(f,y);xlim( [ 0,max(f)/2 ] );sig为输入的一维信号,N为采样点数,fs为采样频率。打个广告:代写matlab算法(数字滤波器,小波变换,神经网络,信号处理,PCA降维等)...

求助matlab作图表示离散序列
答:fs=10^5; t=(0:999); %采样点 x1=A*cos(2*pi*f1*t/fs);figure:plot(t,x,'K+')

在MATLAB里用数值画的曲线怎么求其交点值并让其值在图上显示出来_百度...
答:比如上面2条曲线为AAA,BBB [x y]=find(AAA==BBB);这就是交点坐标 hold on plot(x,y,'+')试试吧,不知道能不能成功

matlab 用卷积conv进行离散序列X{N}和一个正弦波sin(nt)的卷积,然后再...
答:第一 载波和信号不是通过卷积,而是调制。第二 我不清楚什么叫做卷积的逆运算,请搞清楚概念。第三 卷积的意思指的是信号在频域上相乘,一般是过滤波器时需要,而不是再调制的时候。第四 如果不加噪声,调制和解调出来的信号是一样的,没有区别。 你想判断传输质量指的应该是误码率,而误码率与...