用一均匀量化器对零均值、单位方差的高斯源进行量化,这个量化器在区间[-10,10]内均今量化。假定量化电平设在各量化区域的中间点,求出并画出量化电平数为 N=3,4,5,6,7,8,9 和 10 时,量化产生的均方失真作为量化电平数 N的函数图的量化原理图,调制原理图,解调原理图各自的matlab程序源代码是什么?,
时间: 2023-08-19 17:04:53 浏览: 154
量化原理图:
```matlab
% 零均值、单位方差的高斯源
mu = 0;
sigma = 1;
% 量化电平数
N = [3, 4, 5, 6, 7, 8, 9, 10];
% 量化区间
q = linspace(-10, 10, N(end)+1);
% 量化电平
v = (q(1:end-1) + q(2:end)) / 2;
% 量化步长
delta = q(2) - q(1);
% 生成高斯信号
x = mu + sigma * randn(1, 10000);
% 量化
for i = 1:length(N)
y = quantize(x, delta, v(1:i));
% 计算均方失真
D(i) = mean((y - x).^2);
end
% 画出均方失真作为量化电平数 N 的函数图
plot(N, D);
xlabel('N');
ylabel('MSE');
function y = quantize(x, delta, v)
% 一均匀量化器
y = delta * floor(x / delta + 0.5);
% 量化电平
for i = 1:length(v)
y(abs(x - v(i)) < delta/2) = v(i);
end
end
```
调制原理图:
```matlab
% 零均值、单位方差的高斯源
mu = 0;
sigma = 1;
% 量化电平数
N = 8;
% 量化区间
q = linspace(-10, 10, N+1);
% 量化电平
v = (q(1:end-1) + q(2:end)) / 2;
% 量化步长
delta = q(2) - q(1);
% 生成高斯信号
x = mu + sigma * randn(1, 10000);
% 量化
y = quantize(x, delta, v);
% 调制
s = zeros(1, length(y));
for i = 1:length(v)
s(y == v(i)) = i;
end
% 画出调制后的信号
stairs(s);
xlabel('Time');
ylabel('Amplitude');
function y = quantize(x, delta, v)
% 一均匀量化器
y = delta * floor(x / delta + 0.5);
% 量化电平
for i = 1:length(v)
y(abs(x - v(i)) < delta/2) = v(i);
end
end
```
解调原理图:
```matlab
% 零均值、单位方差的高斯源
mu = 0;
sigma = 1;
% 量化电平数
N = 8;
% 量化区间
q = linspace(-10, 10, N+1);
% 量化电平
v = (q(1:end-1) + q(2:end)) / 2;
% 量化步长
delta = q(2) - q(1);
% 生成高斯信号
x = mu + sigma * randn(1, 10000);
% 量化
y = quantize(x, delta, v);
% 调制
s = zeros(1, length(y));
for i = 1:length(v)
s(y == v(i)) = i;
end
% 解调
r = v(s);
% 画出解调后的信号
plot(r);
xlabel('Time');
ylabel('Amplitude');
function y = quantize(x, delta, v)
% 一均匀量化器
y = delta * floor(x / delta + 0.5);
% 量化电平
for i = 1:length(v)
y(abs(x - v(i)) < delta/2) = v(i);
end
end
```
阅读全文