Matlab 求二维矩阵的2个或者更多个峰值

您所在的位置:网站首页 二维图像中的二维 Matlab 求二维矩阵的2个或者更多个峰值

Matlab 求二维矩阵的2个或者更多个峰值

2024-07-17 03:03| 来源: 网络整理| 查看: 265

求一个峰值的方式我就不多说了,find函数就可解决,求两个三个或者更多个该怎么解决?

首先介绍一个函数imregionalmax,具体用法大概就是这样:

PeaksMap = imregionalmax(matrix); surf(double(PeaksMap));

matrix是原始二维矩阵,由于PeaksMap是logical类型,需要先转换为double

它可以把原始矩阵中所有波峰置1,其余数置0

然后我们就可用find函数搜索这个图中大小为1的值的位置

[maxRow,maxCol]=find(PeaksMap==1);

也就是所有波峰的位置信息就可以得到,再将位置信息带入到矩阵matrix中,那么所有波峰的峰值也可以求出来

peaks=zeros(1,length(maxCol)); for ii=1:length(maxRow) peaks(ii)=matrix(maxRow(ii),maxCol(ii)); end

再对求出来的波峰值进行降序排列

%升序排列 [peaks_sort,I] = sort(peaks); %所有波峰降序排列 peaks_sort=fliplr(peaks_sort);

最后就能得到想要数量的波峰峰值以及其各自的位置信息

%找到需要的若干个波峰 peaks_num=2;%想搜索的波峰数目 maxRow1=zeros(1,peaks_num); maxCol1=zeros(1,peaks_num); findpeak=peaks_sort(1:peaks_num); for jj=1:length(findpeak) [maxRow1(jj),maxCol1(jj)]=find(matrix==findpeak(jj)); end

以下是完整代码,如果您觉得有帮助,可以帮忙点赞收藏!

clc;clear;close all; % 创建一个示例的二维矩阵 matrix = ... [0,0,0,0,0,0,0,0,0,0; 0,0,5,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0,0,0; 0,0,0,0,0,0,6,0,0,0; 0,0,0,0,0,0,0,0,0,0; 0,0,0,7,0,0,0,0,0,0; 0,0,0,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,9,0,0; 0,0,11,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0,0,0; ]; figure(1) surf(matrix);%三维波束图 PeaksMap = imregionalmax(matrix);%对所有波峰置1,其余数置0 figure(2) surf(double(PeaksMap));%三维波束图 %找到所有波峰的坐标 [maxRow,maxCol]=find(PeaksMap==1); %% 峰值排序 peaks=zeros(1,length(maxCol)); for ii=1:length(maxRow) peaks(ii)=matrix(maxRow(ii),maxCol(ii)); end %升序排列 [peaks_sort,I] = sort(peaks); %所有波峰降序排列 peaks_sort=fliplr(peaks_sort); %找到需要的若干个波峰 peaks_num=2;%想搜索的波峰数目 maxRow1=zeros(1,peaks_num); maxCol1=zeros(1,peaks_num); findpeak=peaks_sort(1:peaks_num); for jj=1:length(findpeak) [maxRow1(jj),maxCol1(jj)]=find(matrix==findpeak(jj)); end



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3