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 36588919
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Przetwarzanie strumienia ASCII odebranego protokołem UDP  (24 Czerwca 2017, Sob 5:55 pm)
zamiennik funkcji smooth  (23 Czerwca 2017, Pią 1:30 pm)
Warto robić szkolenia?  (22 Czerwca 2017, Czw 8:40 am)
Rysowanie sygnałów Sygnały okresowe  (21 Czerwca 2017, Sro 6:52 pm)
Błąd przy inicjowaniu sieci LVQ  (21 Czerwca 2017, Sro 4:39 pm)
Czy wypada być z byłym chłopakiem przyjaciółki?  (21 Czerwca 2017, Sro 2:19 pm)
Artykuły o Matlab  (21 Czerwca 2017, Sro 9:46 am)
Czy wasz człowiek też jest dziwny?  (20 Czerwca 2017, Wto 1:59 pm)
Poprawianie matury to wstyd?  (20 Czerwca 2017, Wto 8:53 am)
Gdzie po szybką pożyczkę?  (17 Czerwca 2017, Sob 12:43 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