私の質問は単純かもしれませんが、私はここでかなり長い間立ち往生しています。Matlab でステレオ FM 複合ベースバンド信号をシミュレートしようとしています。イタリアのグループの論文「パッシブ レーダーの FM 無線信号の分析とエミュレーション」を基礎として使用しています。私は実際にラジオフォニック信号部分まで適切な信号を作成することができます. 私の問題は、残りの部分2*pi*k_f
と統合にあります。cumsum()
統合ブロックとして使用するためにmatlabの機能を使用しています。すべて問題ないように見えますk_f = 75000
が、論文に記載されているように使用すると、複雑なエンベロープ信号はすべてフラットになり、図 2 の 2 番目のグラフのような三角形はありません。
fmmod
Matlabの機能を使用せずにこれを行うことは、私にとって非常に重要です。これが私のコードです:
clear all
close all
clc
noCh = 1; % number of channels, not important at the moment, just use 1
Fs = 400e3; % sampling frequency
bw_rx = 200e3; % receiver bandwidth (not being used atm)
i_t = 1; % integration time is always 1 second during FM signal generation
[data, Fs_data] = audioread('tool1.mp3'); % music data
t = linspace(0, i_t, Fs*i_t); % time vector
st = zeros(noCh, Fs*i_t);
for k=1:noCh
l = transpose(data(1e6+1:1e6+Fs_data, 1)); % left channel data
r = transpose(data(1e6+1:1e6+Fs_data, 2)); % righ channel data
l = resample(l, Fs*i_t, Fs_data*i_t); % interpolate to Fs for shifting in frequency domain
r = resample(r, Fs*i_t, Fs_data*i_t);
l = l/max(l); % normalize
r = r/max(r);
figure
subplot(2,1,1)
% message signal
mt = 0.5*(l+r) + 0.5*(l-r).*cos(2*pi*2*19000*t) + 0.5*cos(2*pi*19000*t);
mt = mt/max(mt);
temp = abs(fft(mt))/max(abs(fft(mt)));
% plot the message signal
plot(20*log10(fftshift(temp)))
% integration and multiplication with 2*pi*75000
mt = 2*pi*75000*cumsum(mt);
st(noCh, :) = cos(mt) + 1i*sin(mt); % complex envelop stereo FM signal
end
subplot(2,1,2)
% plot the complex envelope signal
plot(20*log10(fftshift(abs(fft(st)))))