求一個(gè)峰值的方式我就不多說了,find函數(shù)就可解決,求兩個(gè)三個(gè)或者更多個(gè)該怎么解決?
首先介紹一個(gè)函數(shù)imregionalmax,具體用法大概就是這樣:
PeaksMap = imregionalmax(matrix);
surf(double(PeaksMap));
matrix是原始二維矩陣,由于PeaksMap是logical類型,需要先轉(zhuǎn)換為double
它可以把原始矩陣中所有波峰置1,其余數(shù)置0
然后我們就可用find函數(shù)搜索這個(gè)圖中大小為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
再對(duì)求出來的波峰值進(jìn)行降序排列
%升序排列
[peaks_sort,I] = sort(peaks);
%所有波峰降序排列
peaks_sort=fliplr(peaks_sort);
最后就能得到想要數(shù)量的波峰峰值以及其各自的位置信息文章來源:http://www.zghlxwxcb.cn/news/detail-785867.html
%找到需要的若干個(gè)波峰
peaks_num=2;%想搜索的波峰數(shù)目
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
以下是完整代碼,如果您覺得有幫助,可以幫忙點(diǎn)贊收藏!文章來源地址http://www.zghlxwxcb.cn/news/detail-785867.html
clc;clear;close all;
% 創(chuàng)建一個(gè)示例的二維矩陣
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);%對(duì)所有波峰置1,其余數(shù)置0
figure(2)
surf(double(PeaksMap));%三維波束圖
%找到所有波峰的坐標(biāo)
[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);
%找到需要的若干個(gè)波峰
peaks_num=2;%想搜索的波峰數(shù)目
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
到了這里,關(guān)于Matlab 求二維矩陣的2個(gè)或者更多個(gè)峰值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!