用matlab写一段对正弦波进行采样、量化、编码,并显示其各个阶段的波形的程序
时间: 2024-05-21 17:13:26 浏览: 94
以下是用MATLAB实现对正弦波进行采样、量化、编码并显示其各个阶段的波形的程序:
% 定义正弦波信号的频率与采样率
Fs = 1000;
f = 50;
% 生成正弦波信号
t = 0:1/Fs:1;
x = sin(2*pi*f*t);
% 绘制正弦波信号的波形
subplot(4,1,1);
plot(t, x);
xlabel('时间 (s)');
ylabel('幅值');
title('正弦波信号的波形图');
% 将正弦波信号进行采样
Ts = 1/50;
ts = 0:Ts:1;
xs = sin(2*pi*f*ts);
% 绘制采样后的正弦波信号的波形
subplot(4,1,2);
stem(ts, xs);
xlabel('时间 (s)');
ylabel('幅值');
title('采样后的正弦波信号的波形图');
% 将采样后的正弦波信号进行量化
bits = 8;
L = 2^bits;
q = 2/L;
xq = round(xs/q)*q;
% 绘制量化后的正弦波信号的波形
subplot(4,1,3);
stem(ts, xq);
xlabel('时间 (s)');
ylabel('幅值');
title('量化后的正弦波信号的波形图');
% 将量化后的正弦波信号进行编码
delta = max(xq)-min(xq);
n = ceil(log2(delta/q));
code = dec2bin((xq-min(xq))/q, n);
% 绘制编码后的正弦波信号的波形
subplot(4,1,4);
plot(t, x);
hold on;
for i = 1:length(ts)
xcode(i) = bin2dec(code(i,:))*q + min(xq);
end
stairs(ts, xcode, 'r');
xlabel('时间 (s)');
ylabel('幅值');
title('编码后的正弦波信号的波形图');
legend('原始信号', '编码后的信号');
阅读全文