Files
RADAR_system_analysis/Functions/00. General/findpeak2D.m
T
2025-07-29 21:45:44 +09:00

50 lines
1.9 KiB
Matlab

function [peakindex2D, peakval2D] = findpeak2D(data2D, th)
[Nrow, Ncol] = size(data2D);
peakindex2D = zeros(Nrow, Ncol);
peakval2D = zeros(Nrow, Ncol);
if isempty(th)
for rowidx = 1 : Nrow
for colidx = 1 : Ncol
indexset = [rowidx-1 colidx; rowidx+1 colidx; rowidx colidx-1; rowidx colidx+1];
det_indexset = (indexset(:,1) > 0) .* (indexset(:,1) < Nrow+1) .* (indexset(:,2) > 0) .* (indexset(:,2) < Ncol+1);
det_indexset = find(det_indexset > 0);
cond_peak = 0;
index_iter_len = length(det_indexset);
for indexset_idx = 1 : length(det_indexset)
if data2D(rowidx, colidx) >= data2D(indexset(det_indexset(indexset_idx),1), indexset(det_indexset(indexset_idx),2))
cond_peak = cond_peak + 1;
end
end
if cond_peak == index_iter_len
peakindex2D(rowidx, colidx) = 1;
peakval2D(rowidx, colidx) = data2D(rowidx, colidx);
end
end
end
else
for rowidx = 1 : Nrow
for colidx = 1 : Ncol
indexset = [rowidx-1 colidx; rowidx+1 colidx; rowidx colidx-1; rowidx colidx+1];
det_indexset = (indexset(:,1) > 0) .* (indexset(:,1) < Nrow+1) .* (indexset(:,2) > 0) .* (indexset(:,2) < Ncol+1);
det_indexset = find(det_indexset > 0);
cond_peak = 0;
index_iter_len = length(det_indexset);
for indexset_idx = 1 : length(det_indexset)
if data2D(rowidx, colidx) >= data2D(indexset(det_indexset(indexset_idx),1), indexset(det_indexset(indexset_idx),2))
cond_peak = cond_peak + 1;
end
end
if cond_peak == index_iter_len && data2D(rowidx, colidx) >= th
peakindex2D(rowidx, colidx) = 1;
peakval2D(rowidx, colidx) = data2D(rowidx, colidx);
end
end
end
end
end