量化信号的FFT

32视图(30天)
Maruthi prasanna C
Maruthi prasanna C 2020年2月2日
评论道: 阿迪 2022年8月17日
我有困难在策划量化信号的FFT的理想qunatizer MATLAB。当我在dB情节FFT规模,我得到无穷值&图是空白。请帮助我,我有下面的代码
fs = 1 e6;
fx = 50 e3;
Afs = 1;
N = 2 ^ 11;
%的时间向量
t = linspace (0, (N - 1) / fs, N);
%输入信号
y = Afs * cos(2 *π*外汇* t);
%频谱
s = 20 * log10 (abs (fft (y) / N / Afs * 2));
%下降冗余一半
s = (1: N / 2);
%频率向量(fs规范化)
f =(0:长度(s) 1);
图(1)
情节(y);
标题(输入信号的)
ylabel (“y”);
包含(“频率垃圾箱”);
B = 2;%没有的
δ= 2/2 ^ B;
fs = 1 e6;
%在测试的周期数
周期= 67;
% N /周期非整数!通过选择cyclesÆprime #
% N = 2的幂加速分析
% N = 2 ^ 10;
%信号频率
fx = f *周期/ N
y = Afs * cos(2 *π*外汇* t);
s = 20 * log10 (abs (fft (y) / N / Afs * 2));
f =(0:长度(s) 1);
图(2)
情节(f、s);
标题(输入信号的频谱);
ylabel (“y”)
包含(“频率垃圾箱”)
日元=圆(y /△) *δ;
图(3)
情节(y,“b”);
持有
茎(日元“r”)
持有
情节(y-y1‘g’)
标题(sprintf (的信号,量化信号和错误% g比特,% g量子化水平'B、B、2 ^));
包含(“频率”);
持有
y2 = 20 * log10 ((abs (fft (y1) / N * 2)));
图(10)
f1 =(0:长度(y2) 1);
情节(f1, y2)
4评论
Chunru
Chunru 2021年8月11日
理论上,量化可以拥有任意整数的水平(不一定是2 ^ B,尽管2 ^ B者优先)。可以不均匀量化。

登录置评。

答案(2)

Chunru
Chunru 2021年8月11日
量化的理想正弦信号产生perodical信号,这可能会有一些奇怪的光谱与0在一些频率导致显示问题。研究quatization效果,可以使用一些其他的信号,例如唧唧喳喳,粉红噪声。下面的代码添加一个偏移量,以便光谱不再是“怪异”。
fs = 1 e6;
fx = 50 e3;
Afs = 1;
N = 2 ^ 11;
%的时间向量
t = linspace (0, (N - 1) / fs, N);
%输入信号
y = Afs * cos(2 *π*外汇* t);
%频谱
s = 20 * log10 (abs (fft (y) / N / Afs * 2));
%下降冗余一半
s = (1: N / 2);
%频率向量(fs规范化)
f =(0:长度(s) 1);
图(1)
情节(y);
标题(输入信号的)
ylabel (“y”);
包含(“频率垃圾箱”);
B = 2;%没有的
δ= 2/2 ^ B;
fs = 1 e6;
%在测试的周期数
周期= 167;
% N /周期非整数!通过选择cyclesÆprime #
% N = 2的幂加速分析
% N = 2 ^ 10;
%信号频率
fx = f *周期/ N
fx = 8.1543 e + 04
y = Afs * cos(2 *π*外汇* t) + 0.123;%添加一个小的偏移量
s = 20 * log10 (abs (fft (y) / N / Afs * 2));
f =(0:长度(s) 1);
图(2)
情节(f、s);
标题(输入信号的频谱);
ylabel (“y”)
包含(“频率垃圾箱”)
日元=圆(y /△) *δ;日元的
ans = 2048×1
-0.5000 -0.5000 -1.0000 -1.0000 -0.5000 1.0000 1.0000 0.5000 0 0
图(3)
情节(y,“b”);
持有
茎(日元“r”)
持有
情节(y-y1‘g’)
标题(sprintf (的信号,量化信号和错误% g比特,% g量子化水平'B、B、2 ^));
包含(“频率”);
持有
y2 = 20 * log10 ((abs (fft (y1) / N * 2)))”
y2 = 2048×1
-13.8447 -58.6345 -62.4346 -74.3996 -103.6032 -59.0645 -60.1435 -59.3283 -45.3150 -38.9921
% y2 = ((abs (fft (y1) / N * 2)))”
图(10)
f1 =(0:长度(y2) 1);
情节(f1, y2)

Yazan
Yazan 2021年8月11日
有一些问题和你的代码。看我下面的修改和注释。你不能计算信噪比,因为你没有任何信号加噪声(除非我丢失的东西)。
clc,清楚,接近所有
fs = 1 e6;
fx = 50 e3;
Afs = 1;
N = 2 ^ 11;
%的时间向量
t = linspace (0, (N - 1) / fs, N);
%输入信号
y = Afs * cos(2 *π*外汇* t);
图(“单位”,“归一化”,“位置”(0.05 - 0.15 0.85 - 0.7))
次要情节(3,2,1)
情节(t、y)、标题(“信号y”);轴
包含(“时间-秒”);
ylabel (“振幅”);
%频谱
Nfft = N;
s = 1 / Nfft * abs (fft (y, Nfft));
f = linspace (0 f / 2 Nfft / 2 + 1);
次要情节(3 2 2)
s = (1: Nfft / 2 + 1) ^ 2;
sy = [s (1), 2 * s (2: end-1), s(结束)];
情节(f, pow2db (sy)),网格
标题(单边功率谱的y '),包含(频率-赫兹的);
ylabel (“数据库”)
%或者你可以用周期图函数与矩形窗口
%你会得到完全相同的结果
% (s2, f2) =周期图(y, rectwin(长度(y)), Nfft, fs,“单向的”,“权力”);
%,情节(f2 pow2db (s2))
%信号2
B = 2;
δ= 2/2 ^ B;
fs = 1 e6;
周期= 67;
fx = fs / N *周期;
yy = Afs * cos(2 *π*外汇* t);
次要情节(2,3)
情节(t, yy)、标题(“信号yy”);轴
包含(“时间-秒”);
ylabel (“振幅”);
%频谱
Nfft = N;
s = 1 / Nfft * abs (fft (yy, Nfft));
s = (1: Nfft / 2 + 1) ^ 2;
syy = [s (1), 2 * s (2: end-1), s(结束)];
次要情节(3、2、4)
情节(f, pow2db (syy)),网格
标题(“yy的单边功率谱”),包含(频率-赫兹的);
ylabel (“数据库”)
%量化信号
日元=圆(y /△) *δ;
次要情节(3 2 5)
n = 100;
情节(t (1: n), y1 (1: n))、标题(“信号y1”);轴
包含(“时间-秒”);
ylabel (“振幅”);网格
持有,
情节(t (1: n), y (1: n),“——”)
呃= y-y1;
情节(t (1: n)犯错(1:n))
传奇({“量化”,“原始”,“错误”})
s = 1 / Nfft * abs (fft (Nfft日元));
s = (1: Nfft / 2 + 1) ^ 2;
sy1 = [s (1), 2 * s (2: end-1), s(结束)];
次要情节(2,6)
情节(f, pow2db (sy1)),网格
标题(“日元单边功率谱”),包含(频率-赫兹的);
ylabel (“数据库”)
%的估计能力
pRMSy = mag2db (rms (y));
pRMSyy = mag2db (rms (yy));
pRMSy1 = mag2db (rms (y1));
流(的功率信号y = % g瓦分贝\ n 'pRMSy)
功率信号y = -3.01267瓦分贝
流(的功率信号yy = % g瓦分贝\ n 'pRMSyy)
信号的yy = -3.0103瓦分贝
流(的功率信号日元= % g瓦分贝\ n 'pRMSy1)
信号的日元= -2.22132瓦分贝
1评论
阿迪
阿迪 2022年8月17日
嘿,在代码中,2位量化,有5个层次。
你可以看到当你“独特”(日元)
但对于2位量化,只有4的水平。00,01年10 11。
因此,将你的信号分成4部分是必要的(至少这就是我的理解。如果我错了,请纠正我。我仍然在学习。
否则,你的代码看起来很好。
我工作在4级量化。
清晰;clc
= 4;
f = 10 e3;
% fs = 25 e6;ts = 1 / f;
t = 0.2 / 10 / f(结束);
t_end = 1 / f;
t = 0: ts: t_end;
x = A * sin(2 *π* f * t) ';
% x = awgn (x, 100);
t = t * 1 e6;
% %
q_bits = 2;
q_num_levels = 2 ^ q_bits;
q_levels = linspace(最小(x)最大(x) q_num_levels);
垃圾箱= interp1(1:元素个数(q_levels) q_levels, 0.5 +(1:元素个数(q_levels) 1));
y =离散化(x,[从垃圾箱正]);
y =正常化(y,“范围”[min (q_levels), max (q_levels)]);
y = y-mean (y);
u =独特(y);
% %
bit_levels = 0: q_num_levels-1;
bit_levels = dec2bin (bit_levels q_bits);
q = diff (q_levels);q = q (1);
q_error = (max (x)分钟(x)) / (2 * q_num_levels);
q_noise_pwr = q /√(12);
% %
图(1);clf
持有盒子;
集(gcf,“颜色”,“k”)
集(gca),“颜色”,“k”)
集(gca),“YGrid”,“上”,“XGrid”,“关闭”)
集(gca),“GridColor”,' w ')
集(gca),“XColor”,' w ')
集(gca),“YColor”,' w ')
集(gca),“GridAlpha”,0.5)
情节(t x,“c”)
情节(t y“米”);
情节(t, x - y,“-.g”)
yticks (q_levels);
yticklabels (bit_levels);
yticklabels ([]);
ylim ([min (x) + 10分钟(x) / max (x) +马克斯(x) / 10])
xlim ([min (t) max (t)))
问=标题([“例子”num2str (q_bits),“比特(”num2str (q_num_levels),“线性量化水平)”]);
lgnd =传奇({{青色}\颜色模拟信号的,
{品红}\颜色量化信号的,
(”{绿}\颜色量化误差信号。换行符,
“Max.Quant。错误= 'num2str (q_error)]});
集(lgnd,“颜色”,“k”);
集(乳头,“颜色”,' w ');
ylabel (“量子化水平”)
包含(“时间——(µs)”)

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!