matlab利用希尔伯特变换做SSB调制时的问题

matlab利用希尔伯特变换做SSB调制时的问题,第1张

t不是一个向量,大哥,t=1000e-6; c1=cos(2pifct);c1就是一个数值了,后面的 c1(1:N) 是啥意思?

当然会说矩阵不平衡了

应该改成:u1=y(1:N)c1+imag(hilbert(y(1:N)))c2;

如果你要表达的是向量点乘,那就要把t先linspace一下

t1=linspace(0,t,N)

然后: c1=cos(2pifct1);

c2也一样

然后就可以了

clc;

clear all;

f=[400/24000 23600/24000];

a=[1 1];

n=198;

b=firpm(n,f,a,'hilbert');

freqz(b,1,10000,48000);

这是我做实验用的,移相-90度。

希尔伯特变换可以实现包络检波!

clear all; close all;

t=0:200;

x1=sin(8pit/100)+1;

subplot(411);plot(t,x1);title('信号');

x2=4sin(40pit/100);

subplot(412);plot(t,x2);title('载波');

x3=(1+x1)x2;

subplot(413);plot(t,x3);title('调幅信号');

x4=abs(hilbert(x3));

subplot(414);plot(t,x4);title('解调信号');

希尔伯特变换的意义本文不提,本文的目标是举例说明到底离散傅里叶变换是如何实现的,并编写程序与matlab自带的hilbert函数结果对比,验证我们的实现过程是否正确。

原始信号为 ,其离散希尔伯特变换的定义公式为:

说明:先让原始信号与 信号做卷积,然后一起合并成一个 复数 信号 。

问题:看上去很简单,但这里的卷积不是一般意义上的卷积的 *** 作!

所以:实际中得到 的方法是通过借助 离散傅里叶变换DFT 来实现的!

因此:本文就用 离散傅里叶变换 来实现 离散希尔伯特变换

设原始信号为 ,总长度一般 (下标n是从 1 开始到N),总体实现步骤可分为3步:

相应的matlab程序:

结果:

手动实现正确!

希尔伯特变换的结果是给原始信号 提供了一个幅值、频率不变,但相位平移90°的信号 。

所以,希尔伯特变换是从"时域"到"时域"的变换!只改变了相位,所以又叫90°移相滤波器;

所以,原始信号 与它的希尔伯特变换 构成正交副。

现在,我们换回到最初的记法:原始信号和它对应的希尔伯特变换信号分别用 和 表示,那么对应的" 解析信号 "就可以用这两个东西组成:

对于这个解析信号,我们可以得它的3瞬属性:瞬时振幅、瞬时相位、瞬时频率。

可以看出,3瞬属性是相互关联的!

瞬时振幅、瞬时相位可以直接求,有意义;

但是瞬时频率 直接 根据解析信号这么按公式 ,是 没有物理意义 的!

并且 离散信号 ,它的瞬时频率求导只能按照" 差分 "来近似,即:

给出matlab的实现程序:

效果:

3瞬属性中的瞬时频率,很明显可以看出它有很多的" 负频率 "!这很明显是错误的。

所以,直接根据" 解析信号 "算瞬时频率是无意义的!

所以,真正做 3瞬属性 的分析,做原信号的" 时频谱 "分析,我们用的:

—— 希尔伯特-黄变换。

是的。matlab实信号是变为复信号的,需利用希尔伯特变换,matlab是是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。

fs=2000; Ndata=4000; N=5000; n=0:Ndata-1; t=n/fs; Ak=rand(1+Ak(3)sin(2pi48t+fik(3))+Ak(4)sin(2pi64t+fik(4)

以上就是关于matlab利用希尔伯特变换做SSB调制时的问题全部的内容,包括:matlab利用希尔伯特变换做SSB调制时的问题、如何用MATLAB设计希尔伯特滤波器、幅度调制的包络检波解调(求MATLAB代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9286864.html

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

发表评论

登录后才能评论

评论列表(0条)

保存