本帖最后由 醉了喝鱼汤 于 2017-7-11 05:48 编辑
用MATLAB产生了一个2FSK信号,1bit/symbol,已经成功。然后我试图plot傅里叶变换后的频域图,结果成了这样(见附件)
用help fskmod,tutorial里的图片和我这个明显差都不是一点远。。。
这是什么导致的呢???调整不同载波频率和取样频率会有略微差别不过和tutorial里的频域图对比相差甚远。
嘤嘤嘤~~~有没有大腿er来探讨一下?~!?
我的函数参数设置code是:
k = 20; % the number of random number
signal_data= round(rand(1,k));
Fc1 = 2000;
Fc2 = 8000;
% Fc3 = 200;
% Fc4 = 500;
fs = 20000; % sampling rate
% symbol_rate = 2;
[fsk_signal] = fsk_mod(signal_data, Fc1, Fc2, fs);
我的FSK函数代码是:
function [modulated_signal] = fsk_mod(input_binary_signal, Fc1, Fc2, fs)
% input of this function is binary signal while output is 2FSK signal
% Fc1 and Fc2 are carrier frequency which in equivalent
% symbolrate default is 1, it means 1 bit per symbol
orig_signal = input_binary_signal(:);
n = numel(orig_signal); % number of input digital signal
dur_sam = 1/fs; % sampling period
m = length(1:fs); % sample number which used for
% generate baseband signal
amp_1 = []; % amplitude of signal 1
amp_2 = []; % amplitude of signal 2
for i = 1:n
if (orig_signal(i) == 1)
amp_1 = [amp_1 1]; % the original digital signal
amp_2 = [amp_2 -1]; % the opposite digital signal
i = i + 1;
else
amp_2 = [amp_2 1];
amp_1 = [amp_1 -1];
i = i + 1;
end
end
amp11 = (ones(1,m))' * amp_1;
amp1 = amp11(:)';
amp22 = (ones(1,m))' * amp_2;
amp2 = amp22(:)';
t = 0:dur_sam:(n - dur_sam);
mod_sig_fsk1 = amp1.*cos(2*pi*Fc1.*t);
mod_sig_fsk2 = amp2.*cos(2*pi*Fc2.*t);
modulated_signal = mod_sig_fsk1 + mod_sig_fsk2; % the 2FSK transmitted signal
figure(1)
subplot(311)
plot(t,amp1);
xlabel('time')
title('Original Baseband signal 1')
axis([min(t) max(t) -1.5 1.5]);
subplot(312);
plot(t,amp2);
xlabel('time')
title('Original Baseband signal 2')
axis([min(t) max(t) -1.5 1.5]);
subplot(313)
plot(t, modulated_signal);
xlabel('time');
ylabel('amplitude');
title('2FSK signal waveform');
axis([min(t) max(t) -1.5 1.5]);
ly = length(modulated_signal);
freq = [-fs/2 : fs/ly : fs/2 - fs/ly];
syy = 10*log10(fftshift(abs(fft(modulated_signal))));
figure(2)
plot(freq, syy)
end
2017-7-11 05:40 上传


