DSP实验(三)希尔伯特变换

3 篇文章 0 订阅

DSP实验(三)希尔伯特变换

  1. 希尔伯特实验仿真
    在 MATLAB 中编写脚本,以 cos 函数建模,生成一个幅度为 1Vpp,长度为1 秒的实信号,其频率为 50Hz,采样点数为 1024 点。 使用 fft()函数将其变换到频域,乘以希尔伯特变换的系统函数,再使用 ifft()函数变换回时域,将变换前与变换后的信号同时显示在同一个 figure 中,观察他们的实部与虚部,并根据现象分析原因。
clc;clear;
T  =  1;
fs =  1024;
f0 =  50;       %信号载频
N  =  fs * T;
t  =  linspace( 0, 1, N );
f  =  linspace( -fs/2, fs/2, N);

sig_phi = 2 * pi * f0 * t;
sig_t = cos(sig_phi);
sig_fft = fft(sig_t);
h = 1i*sign(f);
sig = sig_fft .* h;
sig_ht = ifft(sig);

figure;
subplot(2,1,1);plot(t,sig_t);
subplot(2,1,2);plot(t,sig_ht);

在这里插入图片描述

  1. 复信号性质仿真
    在 MATLAB 中以 cos 函数建模,生成一个幅度为 5Vpp,长度为 1 秒的实线性调频信号 sig1,其调频率为 400Hz/s,起始频率为 50Hz,采样点数为 1024 点。完成以下仿真实验。
  • 1、 在同一个 figure 中显示原始信号 sig1 的时域和频域信息。
  • 2、 对 sig1 做希尔伯特变换得到 sig2信号。并用他们构造 sig3 信号:sig3 信号的实部为 sig1 信号的实部,sig3 信号的虚部为 sig2 信号的实部。在同一个figure 中显示 sig3 的时域信息与频域信息,并分析结果和原因。
  • 3、 使用 exp 函数构造一个与 sig3相同的信号,并仔细思考实信号是如何通过希尔伯特变换得到复信号的,他们的实部与虚部之间的联系。
clc;clear;
T  =  1;
fs =  1024;
f0 =  50;       %信号载频
N  =  fs * T;
t  =  linspace( 0, 1, N );
f  =  linspace(-fs/2,fs/2,N);
k  =  400;       %调频率

sig_phi = 2 * pi * f0 * t + pi * k * t.^2;
sig1 = 2.5*cos(sig_phi);
figure(1);
subplot(2,1,1);plot(t,sig1);title('sig1');
subplot(2,1,2);plot(f,abs(fftshift(fft(sig1))));

h = 1i*sign(f);
sig = fft(sig1) .* h;
sig2 = ifft(sig);
sig3 = sig1 + 1i*sig2;
figure(2);
subplot(2,1,1);plot(t,sig3);title('sig2');
subplot(2,1,2);plot(f,abs(fftshift(fft(sig3))));

sig4 = exp(1i * sig_phi);
figure(3);
subplot(2,1,1);plot(t,sig4);title('sig3');
subplot(2,1,2);plot(f,abs(fftshift(fft(sig4))));

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 使用 MATLAB 完成 SSB 调制
    在 MATLAB 中生成一个幅度为 1Vpp,长度为 1 秒的实线性调频信号,其调频率为 100Hz/s,起始频率为 100Hz,现在使用 10KHz 的 cos 载频对其进行调制,请使用希尔伯特变换生成正交信号,对信号完成 SSB 调制。
clc;clear;
T  =  1;
fs =  25000;
f0 =  100;       %信号载频
N  =  fs * T;
t  =  linspace( 0, 1, N );
f  =  linspace(-fs/2,fs/2,N);
k  =  100;       %调频率

sig_phi = 2 * pi * f0 * t + pi * k * t.^2;
sig1 = cos(sig_phi);           %信号sig1
sig2 = cos(2*pi*10000*t);      %载频sig2
h = 1i*sign(f);
sig = fft(sig2) .* h;
sig3 = ifft(sig);              %正交sig2
sig = fft(sig1) .* h;
sig4 = ifft(sig);              %正交sig2

sig_t = sig1.*sig2 +sig4.*sig3;
subplot(3,1,1);plot(t,real(sig_t));
subplot(3,1,2);plot(t,imag(sig_t));
subplot(3,1,3);plot(f,abs(fftshift(fft(sig_t))));

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值