Matlab 求二维矩阵的2个或者更多个峰值 |
您所在的位置:网站首页 › 二维图像中的二维 › Matlab 求二维矩阵的2个或者更多个峰值 |
求一个峰值的方式我就不多说了,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 |