升采样和降采样应用实例用matlab画图表示
时间: 2024-10-18 10:10:59 浏览: 21
图像降采样和升采样 Matlab 代码
升采样(Interpolation)和降采样(Decimation)都是数字信号处理中的常见操作,它们主要用于改变信号的采样率。以下是MATLAB中的一些基本应用实例和对应的图形表示:
**升采样(Interpolation)**
在升采样中,我们通常将原始信号增加新的样本点来提高其采样频率。例如,假设有一个每秒采样一次的心电信号,我们想将其转换为每半秒采样一次,这就是一个升采样的例子。
```Matlab
% 假设原始信号是均匀采样,周期T=1秒
fs_original = 1; % 采样率
t = 0:1/fs_original:1-1/fs_original; % 时间轴
original_signal = sin(2*pi*5*t); % 假设有5Hz正弦波
% 升采样到新的采样率fs_new = 2 fs_original
fs_new = 2;
new_t = 0:(1/fs_new):1-1/fs_new; % 新的时间轴
upsampled_signal = interp1(t, original_signal, new_t, 'linear'); % 使用线性插值
plot(t, original_signal, 'r', 'LineWidth', 1.5); % 原始信号
hold on;
plot(new_t, upsampled_signal, 'b', 'LineWidth', 1.5); % 升采样后的信号
xlabel('Time (s)');
ylabel('Amplitude');
legend('Original Signal', 'Upsampled Signal');
grid on;
```
在这段代码中,你会看到一个新的红色和蓝色曲线,分别代表原始信号和升采样后的信号。
**降采样(Decimation)**
降采样则是从高采样率的数据中删除一些样本,降低信号的采样频率。例如,如果原始信号每毫秒采样一次,而我们想要每两毫秒取一次,那么这就是降采样。
```Matlab
% 假设原有高频信号,fs_original = 1000 Hz
% ... (此处省略上述代码的创建过程)
% 降采样到新的采样率fs_new = fs_original / 2
downsampled_signal = original_signal(round(new_t*fs_original)); % 每隔两个新时间点取一个
plot(new_t, downsampled_signal, 'g', 'LineWidth', 1.5); % 降采样后的信号
hold off;
xlabel('Time (s)');
ylabel('Amplitude');
legend('Original Signal', 'Downsampled Signal');
grid on;
```
现在你会看到一个绿色曲线,显示了降采样后的信号。
阅读全文