• 大小: 3KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-01-28
  • 语言: Matlab
  • 标签: 雷达  旁瓣比  MATLAB  

资源简介

利用MATLAB计算ISLR积分旁瓣比和PLSR峰值旁瓣比的计算函数及一种非线性调频函数NLSM

资源截图

代码片段和文件信息

function value_ISLR=ISLR(line)
% Copyright(c)2004Beijing Institute of TechnologyRadar Research Lab
% All rights reserved.

% Filename: ISLR.m
% Description: the ISLR of range line or azimuth line after compression
%
% Author: zss
% Date: 2005.4.17

% Modification History
% --------------------
%
% 测试程序
% c = 3e8;
% wave = 0.05;              
% Tp = 20e-6;        
% B = 150e6;         
% fs = 200e6; 
% Kr = B / Tp;
% t = -Tp/2 : 1/fs : (Tp/2 - 1/fs);
% L = length(t);
% chirp = exp(1i * pi * Kr * t.^2);
% YY =fftshift(fft(chirp));
% figureimagesc(abs(YY));
% chirp_ref = conj(fftshift(fft(chirp)));
% line = fftshift(ifft(fftshift((YY.*chirp_ref))));
% figureimagesc(abs(line));
% figureplot(abs(line));
% 求某一条距离线或方位线的峰值旁瓣比,信号频谱一般为偶数点,一般为8倍插值
interp = 8;
fft_line = fft(line);
% figure(1)
% plot(abs(fft_line));
[rowcol] = size(line);
fft_line_interp = zeros(1interp * col);
% 信号的频谱在两边
fft_line_interp(1 : col/2) = fft_line(1 : col/2);
fft_line_interp(interp * col - col/2 + 1 : interp * col) = fft_line(col/2 + 1 : col);
% 信号的频谱在中央
% fft_line_interp(col * 7/2 + 1 : col * 9/2) = fft_line(1 : col);
result_interp = interp * ifft(fft_line_interp); %乘以插值系数是为了插值后频谱的幅度不变
temp  = abs(result_interp);
[value_mainlobeposition_mainlobe] = max(temp);
db_result = 20 * log10(temp / max(temp));
% figure
% plot(db_result);
right_flag = 1;
while right_flag
    for k = 1 : interp * col
        if temp(position_mainlobe + k) <= value_mainlobe * sqrt(2)/2
            right_posi = k;
            right_flag = 0;
            break;
        end
    end
end
right_width = right_posi -1 + (temp(position_mainlobe + right_posi - 1) - ...
          value_mainlobe * sqrt(2)/2) / (temp(position_mainlobe + right_posi - 1) - ...
          temp(position_mainlobe + right_posi));

left_flag = 1;
while left_flag
    for k = 1 : interp * col
        if temp(position_mainlobe - k) <= value_mainlobe * sqrt(2)/2
            left_posi = k;
            left_flag = 0;
            break;
        end
    end
end 
left_width = left_posi - 1 + (temp(position_mainlobe - left_posi + 1) - ...
          value_mainlobe * sqrt(2)/2) / (temp(position_mainlobe - left_posi + 1) - ...
          temp(position_mainlobe - left_posi));     
% width_mainlobe = left_width + right_width;
left_width=2.5*left_width;
right_width=2.5*right_width;
energy_total = sum(temp.^2);
energy_mainlobe = sum(temp((position_mainlobe - ceil(left_width)) : (position_mainlobe + ceil(right_width))).^2);
value_ISLR = -10 * log10(energy_mainlobe / (energy_total - energy_mainlobe));
% return;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2703  2018-11-11 17:31  新建文件夹\ISLR.m
     文件         867  2018-11-14 13:14  新建文件夹\NLFM.m
     文件        2184  2018-11-11 17:27  新建文件夹\PSLR.m
     目录           0  2018-11-24 16:59  新建文件夹\

评论

共有 条评论