Matlab lol中的解调qpsk

Matlab lol中的解调qpsk,matlab,Matlab,我在信号()中有一个电话号码,我知道采样频率是8000hz。使用命令spectrogram,如何确定电话号码 您是否生成了验证代码的测试信号? 看看下面的Matlab代码 % sampling frequency fs = 8000; % sample instants (100 ms) t = 0 : 1/fs : 100e-3 - 1/fs; % test frequencies f1 = 941; %697; f2 = 1209; %1633; % generate test sig

我在信号()中有一个电话号码,我知道采样频率是8000hz。使用命令spectrogram,如何确定电话号码

您是否生成了验证代码的测试信号? 看看下面的Matlab代码

% sampling frequency
fs = 8000;

% sample instants (100 ms)
t = 0 : 1/fs : 100e-3 - 1/fs;

% test frequencies
f1 = 941; %697;
f2 = 1209; %1633;

% generate test signal
tone1 = sin(2*pi*f1*t);
tone2 = sin(2*pi*f2*t);
sig = tone1 + tone2;

%window = ones(100, 1); % rectangular window
%window = hamming(100); % Hamming window
noverlap = 0;
nfft = 1024;

spectrogram(sig, window, noverlap, nfft, fs);

s = spectrogram(sig, window, noverlap, nfft, fs);

figure;
plot( abs( s ) )
并查看图2中生成的图。 您可以使用不同的测试音调频率和窗口(例如矩形、汉明、汉宁、布莱克曼等)进行播放。你会看到光谱中音调的峰值有多尖锐(关于光谱模糊和泄漏)

nfft的编号决定FFT中计算的系数数量。这与图表中的频率分辨率有关

计算整个光谱图可能有点过分。正如您在绘制的频谱和测试音调生成中所看到的:DTMF由两个音调组成。因此,如果我是对的,频谱图的最大值也只会返回一个频率

此外,计算整个光谱图可能是一个过度的工作,因为它的计算相当复杂。您可以只计算给定DTMF频率的DFT分量(=4行+4列=8个待评估频率)