选取门信号 f(t)= g2(t)为被采样信号。利用 MATLAB 实现对信号 f(t)的采 样,利用频域滤波的方法完成对采样信号的重构
时间: 2023-08-01 22:11:32 浏览: 265
应用 MATLAB实现连续信号的采样与重构仿真
5星 · 资源好评率100%
首先,需要定义门信号 g2(t)。这里我们选取一个矩形脉冲信号作为门信号:
```matlab
function signal = g2(t)
signal = rectpuls(t, 0.02);
end
```
接下来,我们需要定义信号 f(t)。这里我们选取一个三角波信号:
```matlab
function signal = f(t)
signal = sawtooth(2*pi*100*t, 0.5);
end
```
现在,我们可以生成采样信号了。我们假设采样率为 10kHz,采样时长为 0.1s:
```matlab
Fs = 10000; % 采样率为 10kHz
T = 0.1; % 采样时长为 0.1s
t = 0:1/Fs:T-1/Fs; % 时间数组
x = f(t).*g2(t); % 采样信号
```
接下来,我们使用 butterworth 低通滤波器对采样信号进行滤波:
```matlab
fc = 500; % 截止频率为 500Hz
order = 6; % 滤波器阶数为 6
[b, a] = butter(order, fc/(Fs/2), 'low'); % 设计 butterworth 低通滤波器
y_filtered = filter(b, a, x); % 将采样信号通过滤波器
```
最后,我们使用反变换函数 ifft 对滤波后的信号进行重构,并播放重构后的信号:
```matlab
y_reconstructed = ifft(fft(y_filtered)); % 将滤波后的信号进行反变换
sound(real(y_reconstructed), Fs); % 播放重构后的信号
```
完整代码如下:
```matlab
function signal = g2(t)
signal = rectpuls(t, 0.02);
end
function signal = f(t)
signal = sawtooth(2*pi*100*t, 0.5);
end
Fs = 10000; % 采样率为 10kHz
T = 0.1; % 采样时长为 0.1s
t = 0:1/Fs:T-1/Fs; % 时间数组
x = f(t).*g2(t); % 采样信号
fc = 500; % 截止频率为 500Hz
order = 6; % 滤波器阶数为 6
[b, a] = butter(order, fc/(Fs/2), 'low'); % 设计 butterworth 低通滤波器
y_filtered = filter(b, a, x); % 将采样信号通过滤波器
y_reconstructed = ifft(fft(y_filtered)); % 将滤波后的信号进行反变换
sound(real(y_reconstructed), Fs); % 播放重构后的信号
```
运行代码,可以听到重构后的信号与原信号基本一致。
阅读全文