目录
一、背景介绍
在数字信号处理和通信领域,采样和量化是两个重要概念,常用于将连续时间信号转换为离散时间信号(数字信号)的过程。
(1)、采样
- 采样是指在连续时间信号中按照一定时间间隔取样,将连续时间信号转换为离散时间信号的过程。
- 采样频率决定了每秒钟采样多少次,通常以赫兹(Hz)为单位表示,采样频率越高,对原始信号的描述就越准确。
- 根据奈奎斯特采样定理,为了避免采样导致的混叠效应,采样频率应至少是信号中最高频率成分的两倍。
(2)、量化
- 量化是指将连续信号的幅度值映射到一个有限的离散值集合上的过程。
- 量化过程中,连续的幅度范围被划分为若干个离散的级别,每个级别对应一个数字值。
- 量化级别的选择决定了数字信号的精度,通常用比特数表示,如8位量化表示可以表示256个不同的数值。
二、图示与公式
1. 采样图示
2. 时域表达式
3. 频域表达式
4. 量化
假设输入信号的范围在a和b之间,量化电平为M。
均匀量化时的量化区间为:
量化区间中点为:
三、实验任务
假设有一信号为 .
1. 设采样率为 fs=2000,绘制原始信号和采样信号。(采样率可自定义,需满足采样定理)
2. 绘制量化信号(均匀量化,量化级数为32)。(量化数可自定义)
四、实验代码
close all;
%% (1) The Original Signal
t = 0:1e-5:1; % We use a quite high sampling rate to approximate continuous signals
m_t = cos(90*pi*t); % Original signal
figure;
plot(t, m_t);
xlim([0 0.1]);
ylim([-1.1 1.1]);
xlabel('Time (t/s)',FontSize=15);
ylabel('Amplitude',FontSize=15);
title('Original Signal',FontSize=18);
%% (2) Sampled Signal
fs = 2000; % Sampling rate
Ts = 1/fs; % Sampling period
n = 0:Ts:1; % Discrete time vector
m_n = cos(90*pi*n); % Sampled signal with fs = 2000
figure;
stem(n, m_n, 'Marker', '.');
xlim([0 0.1]);
ylim([-1.1 1.1]);
xlabel('Discrete Time (t/s)',FontSize=15);
ylabel('Amplitude',FontSize=15);
title('Sampled Signal',FontSize=18);
%% (3) Quantized Signal
quantization_levels = 32; % Number of quantization levels
quantization_interval = (max(m_n) - min(m_n)) / quantization_levels; % Quantization interval size
quantized_signal = round(m_n / quantization_interval) * quantization_interval; % Quantize signal
% Obtain the quantitative value list
Q_value = unique(quantized_signal);
figure;
stem(n, quantized_signal);
xlim([0 0.1]);
ylim([-1.1 1.1]);
xlabel('Discrete Time (t/s)',FontSize=15);
ylabel('Amplitude',FontSize=15);
title('Quantized Signal (Uniform Quantization)',FontSize=18);
%% Calculate Quantization SNR
quantization_error = m_n - quantized_signal;
% Calculate mean squared quantization error
mean_square_quantization_error = mean(quantization_error.^2);
% Calculate mean squared sampled signal
mean_square_sampled_signal = mean(m_n.^2);
% Calculate Quantization SNR
quantization_error_ratio = mean_square_sampled_signal / mean_square_quantization_error ;
% Represent in dB
SNR_simu = 10 * log10(quantization_error_ratio)
% Theoretical value calculation (dB)
SNR_theo = 20*log10(quantization_levels)
五、讨论补充
如果同学们有任何的想法,或者文章出现任何问题,欢迎指正,欢迎交流!