在matlab中查找每列中的局部最大值和最小值

在matlab中查找每列中的局部最大值和最小值,matlab,max,Matlab,Max,我想在图像img_gauss的每一列中找到这两个局部最大值之间的局部最大值和最小值。然后将它们的最小值设为1(白色)。有人知道如何用一种简单的方式做到这一点吗 下面是我的代码。但是我遇到了一些麻烦,我尝试在每次迭代中(针对每列)获取本地化(LOC),然后将它们放在数组peaks_列中,以便按列进行峰值本地化,但出现了以下错误: 下标赋值维度不匹配。 裁剪图像长度时出错(第136行) 峰值列(1:size(强度图,1),x)=pks(:,1) 不太清楚你说的最小值是什么意思。两个最大值之间总是有一

我想在图像img_gauss的每一列中找到这两个局部最大值之间的局部最大值和最小值。然后将它们的最小值设为1(白色)。有人知道如何用一种简单的方式做到这一点吗

下面是我的代码。但是我遇到了一些麻烦,我尝试在每次迭代中(针对每列)获取本地化(LOC),然后将它们放在数组peaks_列中,以便按列进行峰值本地化,但出现了以下错误:

下标赋值维度不匹配。 裁剪图像长度时出错(第136行) 峰值列(1:size(强度图,1),x)=pks(:,1)


不太清楚你说的最小值是什么意思。两个最大值之间总是有一个最小值。所以我会用FindPeak找到minimas

% test data
data = rand(100);

% for saving minima and maxima positions
minimas = zeros(size(data));
for i = 1:size(data,2)
    column = data(:,i);
    [~,minis] = findpeaks(-column);
    % save the positions
    minimas(sub2ind(size(minimas),minis,repmat(i,length(minis),1))) = 1;
end
%generate result, paint all minimas with 1
result = data;
result(minimas==1) = 1;

你能发布一些样本数据吗。
% test data
data = rand(100);

% for saving minima and maxima positions
minimas = zeros(size(data));
for i = 1:size(data,2)
    column = data(:,i);
    [~,minis] = findpeaks(-column);
    % save the positions
    minimas(sub2ind(size(minimas),minis,repmat(i,length(minis),1))) = 1;
end
%generate result, paint all minimas with 1
result = data;
result(minimas==1) = 1;