如何用matlab编程实现希尔伯特变换的时延估计方法,求出时延

如何用matlab编程实现希尔伯特变换的时延估计方法,求出时延,第1张

n = 0:40

a = 2b = -3

x1 = cos(2*pi*0.1*n)

x2 = cos(2*pi*0.4*n)

x = a*x1 + b*x2

num = [2.2403 2.4908 2.2403]

den = [1 -0.4 0.75]

ic = [0 0]

y1 = filter(num,den,x1,ic)% Compute the output y1[n]

y2 = filter(num,den,x2,ic)% Compute the output y2[n]

y = filter(num,den,x,ic)% Compute the output y[n]

yt = a*y1 + b*y2

d = y - yt

subplot(3,1,1)

stem(n,y)

ylabel('判悄顷Amplitude')

title('Output Due to Weighted Input: a \cdot x_{1}[n] + b \cdot x_{2}[n]')

subplot(3,1,2)

stem(n,yt)

ylabel('Amplitude')

title('Weighted Output: a \掘陆cdot y_{1}[n] + b \运谨cdot y_{2}[n]')

subplot(3,1,3)

stem(n,d)

xlabel('Time index n')ylabel('Amplitude')

title('Difference Signal')

data=[85 88 67 87 76 87 79 75 85 80

78 64 74 80 67 90 54 86 75 64

95 86 82 64 86 86 93 56 68 89

67 76 78 95 90 75 79 80 92 45

87 85 83 83 79 60 91 78 65 85 ]

data=data(:) %所有数据转成一列的数据

x=0:10:100 %分数区间

y=hist(data,x) %各派让区间人数

yy=y/length(data)%各区间人数占学生的百分世此比

bar(x,yy)

xlabel('分数')

ylabel('百分比'搜羡迅)

这个函数也是有一点问题的

假设输入信号保存在wave这个变量中,并且每一行代表一路输入信号。

延迟表示向输入信号中庆袭插入0序列,那么假设输入信号一共3路,并且长度为500

那缓镇么,信号延迟过程可以用以下程序实现:

wave_delay = zeros(3,1000)

for i=1:3

wave_delay(i,:i*200+1:i*100+500) = wave(i,:)

end

则得到的延时信号中,1,2,3路信号分别延时100,200,300个采样点扰差粗


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12501249.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存