Initial Commit.

This commit is contained in:
2025-07-29 21:45:44 +09:00
parent a69350b86e
commit 90231d49ae
38 changed files with 2051 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
function [worst_scalloping_loss_dB, avg_scalloping_loss_dB, SNR_loss_dB] = cal_winloss(win)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Calculating losses of windowing
% Start : 23.08.25
% End : 23.08.25
% developed by Kwanggoo Yeo
%
% Description
% - Input
% - 1) win [vector] : window function
%
% - Output
% - 1) worst_scalloping_loss_dB [scalar], [dB] : scalloping loss in worst case
% - 2) avg_scalloping_loss_dB [scalar], [dB] : scallopoing loss in average case [uniform distribution]
% - 3) SNR_loss_dB [scalar], [dB] : SNR processing gain loss
%
%
% History
% (23.08.25) Completed
%
% Referece
% - 1) Mark A. Richards, "Fundamentals of Radar Signal Processing 1st edition", p.257
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if size(win, 1) > 1
win = win.';
end
N = length(win);
worst_scalloping_loss_dB = mag2db( abs( sum( win .* exp(-1i * pi / N * [0:N-1]))) / sum(win));
SNR_loss_dB = pow2db( sum(win)^2 / (N * sum(win.^2)) );
findex = linspace(-pi/N, pi/N, 10000);
for idx = 1 : length(findex)
val(idx) = (abs( sum( win .* exp(-1i * findex(idx) * [0:N-1]))) / sum(win));
end
avg_scalloping_loss_dB = mag2db(sum(val)/10000);
end