【频域分析及处理】7. 信号的频谱搬移

【 1. 傅里叶变换的频移性质 】

时域连续时间信号: e ± j Ω 0 t f ( t ) = e ± j 2 π f 0 t f ( t ) ⇔ X ( f ∓ f 0 ) 时域连续时间信号:e^{±jΩ_0t }f(t)=e^{±j2\pi f_0t }f(t) \Leftrightarrow X(f∓f_0) 时域连续时间信号:e±jΩ0tf(t)=e±j2πf0tf(t)X(ff0)
数字域离散时间信号: e ± j w 0 n f ( n ) = e ± j 2 π f 0 f s n f ( n ) ⇔ X ( f ∓ f 0 ) 数字域离散时间信号:e^{±jw_0n }f(n)=e^{±j2\pi \frac{f_0}{f_s}n }f(n) \Leftrightarrow X(f∓f_0) 数字域离散时间信号:e±jw0nf(n)=e±j2πfsf0nf(n)X(ff0)
其中, f f f 为信号实际频率(单位为 赫兹 Hz), Ω = 2 π f Ω=2\pi f Ω=2πf 为模拟角频率(单位为 赫兹 Hz), w = 2 π f 0 f s w=2\pi \frac{f_0}{f_s} w=2πfsf0 为数字角频率(单位为 弧度/样值rad/sample)。从时域到数字域式子的改变是由于采样的原因即 t = n × t s = n f s t=n\times t_s=\frac{n}{f_s} t=n×ts=fsn,有关数字角频率和模拟角频率的详情请转到博主的这篇文章:数字角频率w、模拟角频率Ω

  • 将一个时域连续信号乘以复指数信号 e j 2 π f 0 t e^{j2\pi f_0 t} ej2πf0t,可以使频谱向上搬移 f 0 f_0 f0 Hz,频谱从 X ( f ) X(f) X(f) 变为 X ( f − f 0 ) X(f-f_0) X(ff0),该过程被称为 上变频
    类似的,将一个时域信号乘以复指数信号 e − j 2 π f 0 t e^{-j2\pi f_0 t} ej2πf0t,可以将其频谱向下搬移 f 0 f_0 f0 Hz,频谱从 X ( f ) X(f) X(f) 变为 X ( f + f 0 ) X(f+f_0) X(f+f0),该过程被称为 下变频
    上变频和下变频又统称为 正交混频
  • 将一个数字域离散信号乘以复指数信号 e j 2 π f 0 f s n e^{j2\pi \frac{f_0}{f_s}n } ej2πfsf0n,可以使频谱向上搬移 f 0 f_0 f0 Hz,频谱从 X ( f ) X(f) X(f) 变为 X ( f − f 0 ) X(f-f_0) X(ff0)
    类似的,将一个数字域离散信号乘以复指数信号 e − j 2 π f 0 f s n e^{-j2\pi \frac{f_0}{f_s}n } ej2πfsf0n,可以将其频谱向下搬移 f 0 f_0 f0 Hz,频谱从 X ( f ) X(f) X(f) 变为 X ( f + f 0 ) X(f+f_0) X(f+f0)

【 2. 仿真验证 】

%%%% 实现频谱向上搬移200Hz
%% [预处理]
clc;       %清除命令窗口
clear;     %清除工作空间的变量和函数
clf;       %清除图形

%% [采样参数]
fs=4096;   %采样频率 (Hz)  
ts=1/fs;   %采样周期 (s)
N=5000;    %采样点数 ()
n=0:N-1;   %采样点索引
t=n*ts;    %采样时间轴

%% [被采信号] 
fa=100;           %信号a的频率
fb=900;           %信号b的频率
xn=2.5+sin(2*pi*fa*t)+3*sin(2*pi*fb*t); %被采信号=信号a+信号b

%% [原信号的频谱]
M=4096;        %FFT运算点数
X=fft(xn,M);   %FFT输出值
X=fftshift(X); %频域搬移
k=-M/2:M/2-1;  %频率点索引
f=fs*k/M;      %频率轴

subplot(1,2,1);
stem(f,abs(X));  %序列图
xlabel('频率');  %横轴坐标
ylabel('幅度');  %纵轴坐标
title("原信号的频谱");
grid;            %显示表格线

%% [频移后的频谱]
xn_shift=xn.*exp(1i*2*pi*200/fs.*n);

M=4096;        %FFT运算点数
X_shiift=fft(xn_shift,M);   %FFT输出值
X_shiift=fftshift(X_shiift); %频域搬移
k=-M/2:M/2-1;  %频率点索引
f=fs*k/M;      %频率轴

%% [作图]
subplot(1,2,2);
stem(f,abs(X_shiift));  %序列图
xlabel('频率');  %横轴坐标
ylabel('幅度');  %纵轴坐标
title('频移后的频谱');
grid;            %显示表格线

在这里插入图片描述

在MATLAB中实现信号频谱的移动可以通过以下步骤完成: 1. 使用fft函数将时域信号转换为频域信号。 2. 使用fftshift函数将频域信号进行中心化,以便移动频谱。 3. 使用circshift函数对中心化后的频域信号进行循环移位操作。循环移位的位移量可以根据需求进行调整。 4. 使用ifftshift函数将移动后的频域信号重新还原为正常的频域表示。 5. 使用ifft函数将移动后的频域信号转换为时域信号。 下面是一个简单的示例代码: ```matlab % 原始信号 Fs = 100; % 采样率 T = 1/Fs; % 采样周期 L = 1000; % 信号长度 t = (0:L-1)*T; % 时间向量 x = sin(2*pi*10*t) + sin(2*pi*20*t); % 原始信号 % 频谱搬移 X = fft(x); % 将时域信号转换为频域信号 X_shifted = fftshift(X); % 中心化频域信号 shift_amount = 50; % 频谱移动的位移量 X_shifted = circshift(X_shifted, shift_amount); % 循环移位 X_shifted = ifftshift(X_shifted); % 还原为正常的频域表示 x_shifted = ifft(X_shifted); % 将移动后的频域信号转换为时域信号 % 绘制结果 subplot(2,1,1); plot(t, x); title('原始信号'); xlabel('时间 (s)'); ylabel('幅值'); subplot(2,1,2); plot(t, x_shifted); title('频谱搬移后的信号'); xlabel('时间 (s)'); ylabel('幅值'); ``` 这个示例代码中,我们首先生成了一个包含两个正弦波的原始信号。然后,我们对原始信号进行频谱移动,位移量为50。最后,我们绘制了原始信号和移动后的信号。你可以根据需要修改信号的特性和移动的位移量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MR_Promethus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值