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

Aktualnie online:




Najnowsze posty na forum:
Tablica manetyczna czy kredowa  (14 Sierpnia 2017, Pon 1:00 pm)
Darkland online cały film po polsku pobierz lektor pl 2017  (12 Sierpnia 2017, Sob 11:35 pm)
Spider-Man: Homecoming online dubbing pl cały film 2017  (12 Sierpnia 2017, Sob 11:27 pm)
Czym chata bogata! online cały film po polsku pobierz 2017  (12 Sierpnia 2017, Sob 11:18 pm)
Witam  (12 Sierpnia 2017, Sob 11:09 pm)
GUI do modelu  (9 Sierpnia 2017, Sro 2:06 pm)
Resztki farby po malowaniu  (7 Sierpnia 2017, Pon 2:19 pm)
Pytanie o "finverse"  (5 Sierpnia 2017, Sob 8:24 pm)
Pytanie i funkcję "fit"  (4 Sierpnia 2017, Pią 7:39 pm)
Simulink wyjście programu  (4 Sierpnia 2017, Pią 2:01 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