Zaloguj się
Blog na Matlab.pl
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Modelowanie i symulacja pracy radaru FMCW
Forum MATLAB Strona Główna-> Sterowanie i modelowanie systemów
Post Wysłany: 2 Sierpnia 2014, Sob 7:22 pm Temat postu: Modelowanie i symulacja pracy radaru FMCW Odpowiedz z cytatem
 
AUTOR:
karol93
Początki pisania


Dołączył: 02 Sie 2014
Posty: 5


Ogląda profil użytkownika Wyślij prywatną wiadomość
Witam. W oparciu o tutorial http://www.mathworks.com/help/phased/examples/automotive-adaptive-cruise-control-using-fmcw-technology.html chcę zrobić własną symulację, jednak zawierającą 2 cele (lub więcej) podobny przykład był dla radaru impulsowego i tak wyglądało to trochę prościej, bo opierało się o zliczanie impulsów. http://www.mathworks.com/matlabcentral/fileexchange/41021-radar-system-design-and-analysis-with-matlab--webinar/content/RadarSystemDesign_Webinar_Examples/html/rangeDopplerStreamExample.html
Jak jednak zastosować podobną ideę dla fali ciągłej? Poniżej zamieszczam kod. Na 'Range Doppler Map' mam dobrze wskazane położenia(odległości) celów, jednak nie wiem, jak wyświetlić ich prędkość. Ktoś coś podpowie?
Kod:

close all
clear all
clc

fr
= 77e9;
c = 3e8;
lambda = c/fr;
maxRange = 200;
tm = 5.9*range2time(maxRange,c);
rangeRes = 1;
bw = range2bw(rangeRes,c);
sweepSlope = bw/tm;
fr_max = range2beat(maxRange,sweepSlope,c);
v_max = 230*1000/3600;
fd_max = speed2dop(2*v_max,lambda);

fb_max = fr_max+fd_max;
fs = max(2*fb_max,bw);
signal = phased.FMCWWaveform('SweepTime',tm,'SweepBandwidth',bw,...
    
'SampleRate',fs);
s = step(signal);
figure('WindowStyle','docked'),
subplot(211); plot(0:1/fs:tm-1/fs,real(s));
xlabel('Time (s)'); ylabel('Amplitude (v)');
title('FMCW signal'); axis tight;
subplot(212); spectrogram(s,32,16,32,fs,'yaxis');
title('FMCW signal spectrogram');

tgt{1}=phased.RadarTarget('MeanRCS',40,'OperatingFrequency',fr,'Model','Swerling3');
sTgtMotion{1} = phased.Platform('InitialPosition',[150; 0; 0],'Velocity',[120; 0; 0]);
channel{1} = phased.FreeSpace('SampleRate',fs,'TwoWayPropagation',true,'OperatingFrequency',fr);

tgt{2}=phased.RadarTarget('MeanRCS',30,'OperatingFrequency',fr,'Model','Swerling3');
sTgtMotion{2} = phased.Platform('InitialPosition',[90; 0; 0],'Velocity',[60; 0; 0]);
channel{2} = phased.FreeSpace('SampleRate',fs,'TwoWayPropagation',true,'OperatingFrequency',fr);

%
collector = phased.Collector('Sensor',ant,'Wavefront','Plane','OperatingFrequency',fr);

ant_aperture = 6.06e-4;                         % in square meter
ant_gain
= aperture2gain(ant_aperture,lambda);  % in dB

tx_ppower
= db2pow(5)*1e-3;                     % in watts
tx_gain
= 9+ant_gain;                           % in dB

rx_gain
= 15+ant_gain;                          % in dB
rx_nf
= 4.5;                                    % in dB

htx
= phased.Transmitter('PeakPower',tx_ppower,'Gain',tx_gain);
hrx = phased.ReceiverPreamp('Gain',rx_gain,'NoiseFigure',rx_nf,...
    
'NoiseBandwidth',bw,'SampleRate',fs);
radar_speed = 72*1000/3600;
hradarplatform = phased.Platform('Velocity',[radar_speed;0;0],'InitialPosition',[0;0;0]);


hrdresp = phased.RangeDopplerResponse('PropagationSpeed',c,...
    
'DopplerOutput','Speed','OperatingFrequency',fr,...
    
'SampleRate',fs,'RangeMethod','Dechirp','SweepSlope',sweepSlope,...
    
'RangeFFTLengthSource','Property','RangeFFTLength',256,...
    
'DopplerFFTLengthSource','Property','DopplerFFTLength',256);


Nsweep = 256;
xr =complex(zeros(1180,Nsweep));
xd=complex(zeros(1180,Nsweep));
rsig=zeros(1180,Nsweep);
for
m = 1:Nsweep
    
[radar_pos,radar_vel] = step(hradarplatform,signal.SweepTime);     
    for
n = 1:2
        
[tgt_pos(:,n),tgt_vel(:,n)] = step(sTgtMotion{n},signal.SweepTime);               
        
x = step(signal);
        
tsig(:,n)=step(htx,x); %,ang(:,n)
        
tsig(:,n)=step(channel{n},tsig(:,n),radar_pos,tgt_pos(:,n), radar_vel,tgt_vel(:,n));
        
tsig(:,n)=step(tgt{n},tsig(:,n),true); 
    
end   
    rsig
= step(hrx,tsig);
    
    
xd = dechirp(rsig,x);                       
    
xd = sum(xd,2);
    [
rdmap,rangeGrid,speedGrid] = step(hrdresp,xd);
end

for a=1:2
    xr
(:,a) = xd;
end

figure
('WindowStyle','docked'),
plotResponse(hrdresp,xr);                     
axis([-v_max v_max 0 maxRange])
fb_rng = rootmusic(pulsint(xr,'coherent'),1,fs);
rng_est = beat2range(fb_rng,sweepSlope,c)


Z góry dziękuję!


 

Post Wysłany: 27 Lipca 2015, Pon 10:11 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
janedakdoy



Dołączył: 27 Lip 2015
Posty: 2


Ogląda profil użytkownika Wyślij prywatną wiadomość
This story teaches many readers do not read. I know that I'm getting really good at it.


 

Forum MATLAB Strona Główna-> Sterowanie i modelowanie systemów
Wyświetl posty z ostatnich:   

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 35578913
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Miejsce zerowe  (24 Kwietnia 2017, Pon 7:36 pm)
Badanie rozkładu prawdopodobieństwa  (24 Kwietnia 2017, Pon 9:50 am)
zadanie z pętlami  (22 Kwietnia 2017, Sob 5:59 pm)
gęstoś mocy sygnału  (20 Kwietnia 2017, Czw 9:30 pm)
Wycięcie sygnału z pliku za pomocą skryptu.  (20 Kwietnia 2017, Czw 2:34 pm)
MATLAB potrzebuje pomocy w rozwiązaniu algorytmu  (18 Kwietnia 2017, Wto 5:51 pm)
MATLAB potrzebuje pomocy w rozwiązaniu algorytmu  (18 Kwietnia 2017, Wto 5:30 pm)
MATLAB potrzebuje pomocy w rozwiązaniu algorytmu  (18 Kwietnia 2017, Wto 4:37 pm)
kredyt dla firm  (14 Kwietnia 2017, Pią 10:38 am)
Przekazywanie zmiennych między GUI  (12 Kwietnia 2017, Sro 12:45 pm)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum