用matlab代码 固定采样频率500KHZ 分别对100KHZ ,250KHZ,400KHZ 的正弦波信号进行采样和重建
时间: 2023-10-02 09:08:25 浏览: 501
好的,我可以为您提供一些代码来实现这个问题。首先,我们需要生成三个正弦波信号,分别是100KHZ,250KHZ和400KHZ。可以使用MATLAB的sin函数来生成这些信号。具体代码如下:
```matlab
% 生成100KHZ的正弦波信号
fs = 500000; % 采样频率
t = 0:1/fs:1-1/fs; % 采样时间
f1 = 100000; % 正弦波频率
x1 = sin(2*pi*f1*t); % 生成正弦波信号
% 生成250KHZ的正弦波信号
f2 = 250000;
x2 = sin(2*pi*f2*t);
% 生成400KHZ的正弦波信号
f3 = 400000;
x3 = sin(2*pi*f3*t);
```
生成信号后,我们需要对每个信号进行采样。由于采样频率为500KHZ,因此可以简单地使用MATLAB的downsample函数对信号进行下采样。具体代码如下:
```matlab
% 对100KHZ信号进行采样
fs_new = 100000; % 新的采样频率
x1_new = downsample(x1, fs/fs_new); % 采样
% 对250KHZ信号进行采样
fs_new = 250000;
x2_new = downsample(x2, fs/fs_new);
% 对400KHZ信号进行采样
fs_new = 400000;
x3_new = downsample(x3, fs/fs_new);
```
下采样后,我们可以将信号重建回原来的采样频率。可以使用MATLAB的resample函数来完成这个过程。具体代码如下:
```matlab
% 将100KHZ信号重建回原来的采样频率
fs_new = 100000; % 新的采样频率
x1_recon = resample(x1_new, fs/fs_new, 1); % 重建
% 将250KHZ信号重建回原来的采样频率
fs_new = 250000;
x2_recon = resample(x2_new, fs/fs_new, 1);
% 将400KHZ信号重建回原来的采样频率
fs_new = 400000;
x3_recon = resample(x3_new, fs/fs_new, 1);
```
现在,我们已经完成了对三个正弦波信号的采样和重建。可以使用MATLAB的plot函数将原始信号和重建信号进行比较。具体代码如下:
```matlab
% 绘制100KHZ信号的原始信号和重建信号
subplot(2, 1, 1);
plot(t, x1);
title('100KHZ Original Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2, 1, 2);
plot(t, x1_recon);
title('100KHZ Reconstructed Signal');
xlabel('Time (s)');
ylabel('Amplitude');
% 绘制250KHZ信号的原始信号和重建信号
subplot(2, 1, 1);
plot(t, x2);
title('250KHZ Original Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2, 1, 2);
plot(t, x2_recon);
title('250KHZ Reconstructed Signal');
xlabel('Time (s)');
ylabel('Amplitude');
% 绘制400KHZ信号的原始信号和重建信号
subplot(2, 1, 1);
plot(t, x3);
title('400KHZ Original Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2, 1, 2);
plot(t, x3_recon);
title('400KHZ Reconstructed Signal');
xlabel('Time (s)');
ylabel('Amplitude');
```
这些代码将生成三个图形窗口,每个图形窗口包含原始信号和重建信号的图形。
阅读全文