matlab仿真-均匀量化

更新时间:2023-08-30 04:51:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

matlab仿真-均匀量化 ,对信号进行2到8bit量化,并对两种量化方式的量化噪声作对比

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% matlab仿真-均匀量化 % % 对信号进行2到8bit量化,并对两种量化方式的量化噪声作对比 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc;clear

n=1:2000;

y=sin(2*pi*n/100)+0.5*cos(2*pi*n/200)+2*sin(2*pi*n/300);

for bits=2:8

figure(bits-1);

v=0:2^bits;

m=-2.6+(2.6+2.6)/2^bits*v; %量化

v1=1:2^bits;

p_round=m(v1)+(m(v1+1)-m(v1))/2; %中间值

%画原函数图

subplot(3,1,1);

plot(n,y);

grid on;

title('y(n)');

axis([0,2000,-3.5,3.5]);

%画round()函数量化图

y_round=y;

for i=1:2000

for j=1:2^bits

if(y(i)>=m(j)&&y(i)<m(j+1))

y_round(i)=p_round(j);

end;

end;

end;

subplot(3,1,2);

plot(n,y_round);

title('round(n)');

grid on;

axis([0,2000,-3.5,3.5]);

%画floor()函数量化图

y_floor=y;

for i=1:2000

for j=1:2^bits

if(y(i)>=m(j)&&y(i)<m(j+1))

y_floor(i)=m(j);

matlab仿真-均匀量化 ,对信号进行2到8bit量化,并对两种量化方式的量化噪声作对比

end;

end;

end;

subplot(3,1,3);

plot(n,y_floor);

grid on;

title('floor(n)');

axis([0,2000,-3.5,3.5]);

%计算SNR

Y_power=sum(y.^2)/2000;

round_power=sum((y-y_round).^2)/2000; SNR_round(1)=0;

SNR_round(bits)=Y_power/round_power;

floor_power=sum((y-y_floor).^2)/2000; SNR_floor(1)=0;

SNR_floor(bits)=Y_power/floor_power;

end; %结束2-8比特循环

SNR_round_db=10*log10(SNR_round) SNR_floor_db=10*log10(SNR_floor)

%画SNR图

figure(8);

axis_x=1:8;

plot(axis_x,SNR_round_db);

title('量化信噪比');

hold on;

plot(axis_x,SNR_floor_db,'r'); grid on;

axis([2,8,0,50]);

xlabel('bit');

ylabel('SNR/dB');

legend('round','floor');

本文来源:https://www.bwwdw.com/article/2qvi.html

Top