matlab画2fsk频谱,Matalab产生2FSK信号出频域图问题

本帖最后由 醉了喝鱼汤 于 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 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

352c3c2c1a24dbb77812dca2f485bc38.png