160 likes | 370 Views
Metr 51: Scientific Computing II Lecture 10: Lidar Plotting Techniques 2. Allison Charland 10 April 2012. Reminder. One week of Matlab left! Matlab Final will be on April 19 th Then on to HTML and creating a personal webpage. Doppler Lidar Theory. Movement of aerosols by wind.
E N D
Metr 51: Scientific Computing IILecture 10: Lidar Plotting Techniques 2 Allison Charland 10 April 2012
Reminder • One week of Matlab left! • Matlab Final will be on April 19th • Then on to HTML and creating a personal webpage
Doppler Lidar Theory Movement of aerosols by wind Infrared light reflected from aerosols Emitted infrared light The shift in frequency of the return echo is related to the movement of aerosols. The faster the aerosols move, the larger the shift in frequency. From this, the wind speed relative to the light beam can be measured.
Doppler wind lidar • Halo Photonics, Ltd. Stream Line 75 • 1.5 micron • Eye-safe • 75 mm aperture all-sky optical scanner • Min Range: 80 m • Max Range: 10km • 550 user defined range gates (24 m) • Temporal resolution: 0.1-30 s • Measurements: • Backscatter Intensity • Doppler Radial Velocity
Lidar Scanning Techniques 30o 70o 95o • Multiple elevation and azimuth angles can be adjusted to create different types of scans. • DBS (Doppler Beam Swinging): • Wind Profile • Stare: Vertically pointing beam • RHI (Range Height Indicator): • Fixed azimuth angle with varying elevation angles • PPI (Plan Position Indicator): • Fixed elevation angle with varying azimuth angles
dlmread • M = dlmread(filename, delimiter, R, C) • dlmread will read a file with any type of delimiter from any row or column. • M = dlmread(filename, delimiter, range) • It can also be used to specifically read a range of different rows and columns. • The delimiter can be expressed with a character string that responds to the type of delimiter. • Use '\t' to specify a tab delimiter • If you want to specify an R, C, or range input, but not a delimiter, set the delimiter argument to the empty string, (two consecutive single quotes with no spaces in between, ''). For example, • M = dlmread('myfile.dat', '', 5, 2)
dlmread • M = dlmread(filename, delimiter, R, C) • Reads data whose upper left corner is at row R and column C in the file. Values R and C are zero-based, so that R=0, C=0 specifies the first value in the file. • M = dlmread(filename, delimiter, range) • Reads the range specified by range = [R1 C1 R2 C2] where (R1,C1) is the upper left corner of the data to read and (R2,C2) is the lower right corner
RHI Data Date & Time(UTC)
Create your distance array dist dist dist = 0:129; % Zero to number of gates - 1 dist = (dist + 0.5)*24; %Create distance array dist=dist'; %Transpose Note: This distance refers to the distance along the lidar beam at any angle. For the stare data, this corresponded to the height. It will be used later.
RHI Data Date & Time(UTC) • This file has a fixed azimuth angle of 145o and elevation angles ranging from 0o to 80o at intervals of 5o • There will be 16 sets of data for each elevation angle. (for i = 1:16)
Read the time and angle row R_t = 17; for i = 1:16 time_range = [R_t 0 R_t 2]; T(:,i) = dlmread(‘filename’,'',time_range); R_t = R_t + 131; %Set row range to the next %time row = num of gates +1 end %for So now T will be a 3x16 array with the first row corresponding to the times (will not be needed), the second row should be the same azimuth values, and the third row is the changing elevation angles.
Read in velocity Within the same loop as the time range R1_d = 18; %Row where velocity begins R2_d = 147; %Row where velocity ends for i = 1:16 data_range = [R1_d 1 R2_d 1]; V(:,i) = dlmread(‘filename’,'',data_range); R1_d = R1_d + 131; R2_d = R2_d + 131; end %for So now V will be a 130x16 array with the rows corresponding to velocity at range gates and columns corresponding to changing elevation angles.
Calculating x and z distances Lidar scan- dist z Elev. angle x lidar %Calculate horizontal distances elev = T(3,:)*(pi/180); %Calculate x and y distances [a,b] = size(V); for j = 1:a for p = 1:b x(j,p) = dist(j)*cos(elev(p)); z(j,p) = dist(j)*sin(elev(p)); end end
Plotting with pcolor figure(1);clf; pcolor(x,z,V) shading flat xlabel('X (m AGL)'); ylabel('Z (m AGL)'); title('Doppler Radial Velocity (m/s)') colorbar
figure(1) Adjust the colorbar axis to show the range of velocities for your data. Filter the data so that if there is a velocity change of ±7 ms-1 between any two range gates, then any data after that is NaN. Set any data within the first 100 m to be NaN