Why there is a modulation in case of frequency offset?

9 次查看(过去 30 天)
There is modulation in a last graph of a signal (figure 1). At programm there is no such kind of modulation (there is only transfer of a signal on the carrier frequency). Why? Where a mistake?
MATLAB code:
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
% +++++++++++++++++++++ Doppler Shift ++++++++++++++++++++++++++++++++++++
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%%Initialization
clear all; close all; clc; format longE;
% ~~~~~~~~~~~~~~~~~~~ Begin of the Programm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% Initial parameters of the Signal
f=100; %Frequency of the signal (sin), [Hz];
Fc=1e3; %Carrier frequency, [Hz];
Fd=30*f; %Sampling frequencym, [Hz];
A=1; %Amplitude
%%~~~~~~~~~~~~~~~~~~Initializing Doppler Shift~~~~~~~~~~~~~~~~~~~~~~~~~~
c=3e8; %Speed of light, [m/a];
%````````````````````````````````Speeds: ```````````````````````````````
Fdoppler=10; %Maximal Doppler Shift, [Hz]
Speed=(Fdoppler*c)/(Fc+f); %Necessary speed in [m/s] for receiving necessary shift.
speeedfordisp=(Fdoppler*3.6*c)/(Fc+f); %Necessary speed in [m/s] for receiving necessary shift.
fprintf('\n\n\n\nAt the set parameters for receiving shift on %d Hz\nspeed is necessary: \n \t -- [m/s]:\t %.3f;\n \t -- [km/h]:\t %3f.\n\n', Fdoppler, Speed, speeedfordisp);
%``````````````````````````````````````````````
%New wave frequency (after Doppler Effect):
betta=Speed/c;
alpha=0;
f_dopl=((Speed*(Fc+f))/c)*cosd(alpha);
%%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%~~~~~~~ Passing a signal throught the channel with a Doppler Effect ~~~~~
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%Parametrs of the signal
t=(0:1/Fd:1);
N = length(t);
NFFT = 16000;
FrequencyAxe=Fd*linspace(0,1,NFFT); %Frequency Axe;
%Initializing the signal
Signal=A*sin(2*pi*f.*t);
%Modulating the signal:
SignalModulated=Signal.*exp(1i*2*pi*(Fc).*t);
%Add Doppler Effect:
Spectr = fft(SignalModulated); %Conver to the Frequency Domain
SignalModulated_D=ifft(circshift(Spectr, [0 f_dopl])); %Add shift
%Demodulation the signal
SignalDemodulated=SignalModulated_D.*exp(-1i*2*pi*(Fc).*t);
%`````````````````````````````````````````````````````````````````````````
%```````````````````````` END OF PROGRAMM'S PART `````````````````````````
%`````````````````````````````````````````````````````````````````````````
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%~~~~~~~~~~~~~~~~~ Calculating a spectr of the signals ~~~~~~~~~~~~~~~~~~~
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%Spectr of the initial signal:
SpectrInitialSignal=(1/NFFT).*fft(Signal, NFFT); Plot_SpectrInitialSignal=abs(SpectrInitialSignal(1:NFFT));
%Spectr of the modulated signal:
SpectrModulatedSignal=(1/NFFT).*fft(SignalModulated, NFFT); Plot_SpectrModulatedSignal=abs(SpectrModulatedSignal(1:NFFT));
%Spectr of the modulated signal with a Doppler Effect:
SpectrModulatedSignal_D=(1/NFFT).*fft(SignalModulated_D, NFFT); Plot_SpectrModulatedSignal_D=abs(SpectrModulatedSignal_D(1:NFFT));
%Spectr of the demodulated signal (with a Doppler Effect):
SpectrDemodulatedSignal=(1/NFFT).*fft(SignalDemodulated, NFFT); Plot_SpectrDemodulatedSignal=abs(SpectrDemodulatedSignal(1:NFFT));
%`````````````````````````````````````````````````````````````````````````
%```````````````````````` END OF PROGRAMM'S PART `````````````````````````
%`````````````````````````````````````````````````````````````````````````
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plot ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%Intializing of label variables:
TimeAxe='Time, [s]';
FreqAxe='Frequency, [Hz]';
% TESTING PART (All plots are separated from each other)
figure(1)
%~~ SIGNALS ~~
%Plot the initial signal:
subplot(4,2,1);
plot(t, Signal);
xlabel(TimeAxe);
title('Initial signal');
%Plot the modulated signal
subplot(4,2,3);
plot(t,SignalModulated);
xlabel(TimeAxe);
title('Modulated signal');
%Plot the modulated signal with a Doppler Effect
subplot(4,2,5);
plot(t,SignalModulated_D);
xlabel(TimeAxe);
title('Modulated signal with a Doppler Effect');
%Plot the demodulated signal with a Doppler Effect
subplot(4,2,7);
plot(t,SignalDemodulated);
xlabel(TimeAxe);
title('Demodulated signal');
%`````````````
%~~ SPECTRS ~~
%Plot the SPECTR of the initial signal
subplot(4,2,2);
plot(FrequencyAxe,Plot_SpectrInitialSignal);
xlabel(FreqAxe);
title('Spectr of the initial signal');
%Plot the SPECTR of the modulated signal:
subplot(4,2,4);
plot(FrequencyAxe,Plot_SpectrModulatedSignal);
xlabel(FreqAxe);
title('Spectr of the modulated signal');
%Plot SPECTR of the modulated signal with Doppler Effect
subplot(4,2,6);
plot(FrequencyAxe,Plot_SpectrModulatedSignal_D);
xlabel(FreqAxe);
title('SPECTR of the modulated signal \bf with Doppler Effect');
%Plot SPECTR of the demodulated signal:
subplot(4,2,8);
plot(FrequencyAxe,Plot_SpectrDemodulatedSignal);
xlabel(FreqAxe);
title('Spectr of the demodulated signal');
%`````````````
%GRAPHICS
%~~ Signals ~~
figure(2);
%Plot the initial signal and demodulated signal:
subplot(2,1,1);
hold on;
%Plot the initial signal:
plot(t,Signal,'m');
%Plot the recieved signal:
plot(t,SignalDemodulated, 'r');
hold off;
xlabel(TimeAxe);
legend('Initial signal','Demodulated signal');
title('Initial signal and demodulated signal');
%Plot the modulated signal and the modulated signal with the Doppler Effect:
subplot(2,1,2);
hold on;
%Plot the modulated signal:
plot(t,SignalModulated, 'm');
%Plot the modulated signal with a Doppler Effect:
plot(t,SignalModulated_D, 'r');
xlabel(TimeAxe);
legend('Modulated signal','Modulated signal \bfwith Doppler Effect');
title('Modulated signal with/without Doppler Effect');
%~~ SPECTRS ~~
figure(3);
hold on;
%Plot the SPECTR of initial signal
plot(FrequencyAxe,Plot_SpectrInitialSignal, 'm');
%Plot the SPECTR of the recieved signal
plot(FrequencyAxe,Plot_SpectrDemodulatedSignal, 'r');
hold off;
xlabel(TimeAxe);
legend('Spectr of the initial signal','Spectr of the demodulated signal');
title('Spectrs of the initial signal and demodulated signal');

采纳的回答

Youssef  Khmou
Youssef Khmou 2013-3-17
编辑:Youssef Khmou 2013-3-17
hi Alex,
Your question is acceptable, you expect to visualize the Demodulated signal as the original, but the Doppler shift acts also as modulation, try this small example :
Fs=20;
f=5;
t=0:1/Fs:5;
y=sin(2*pi*t*f);
FF=fft(y);
FF2=circshift(FF,[0 10]);
y2=ifft(FF2);
subplot(1,2,1), plot(t,y),
title(' Original Signal');
subplot(122), plot(t,y2);
title(' Recovered Signal after shifting the Spectrum +> with 10 steps');
Then its alright :
Your method for Modulating /Demodulating is correct, but you can do the same with fmmod and fmdemod functions .
Last thing, there is a small error in the last graph , 3rd figure , the xlabel is FreqAxe
I hope this helps

更多回答(1 个)

Masoud Ghanbari
Masoud Ghanbari 2013-3-17
you know what... Too Long Buddy

类别

Help CenterFile Exchange 中查找有关 Detection, Range and Doppler Estimation 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by