如何在matlab中找到数组的最小值?

时间:2015-11-11 16:18:28

标签: arrays matlab minimum

Image

我想提取在图中用黑色轮廓标记的两个点(即它们的值)。这些最小点是2和5.然后在提取这些标记点坐标后我想计算它们之间的距离。

我用来绘制图像平均值,计算最小值和位置的代码是

I1=imread('open.jpg');
I2=rgb2gray(I1);
figure, title('open');
plot(1:size(I2,1), mean(I2,2));
hold on
horizontalAverages = mean(I2 , 2);
plot(1:size(I2,1) , horizontalAverages)
[Minimas locs] = findpeaks(-horizontalAverages) 
plot(locs , -1*Minimas , 'r*')

Minima

-86.5647
-80.3647
-81.3588
-106.9882
-77.0765
-77.8235
-92.2353
-106.2235
-115.3118
-98.3706

locs =

    30
    34
    36
    50
    93
    97
   110
   121
   127
   136

2 个答案:

答案 0 :(得分:0)

从您的问题中有点不清楚您实际上在寻找什么,但是下面的一个班轮将为您提供当地最低标准:

% Some dummy data
x = 1:11;
y = [3 2 1 0.5 1 2 1 0 1 2 3];

min_idx = ([0 sign(diff(y))] == -1) & ([sign(diff(y)) 0] == 1);

figure
plot(x, y);
hold on;
scatter(x(min_idx), y(min_idx))
hold off;

enter image description here

答案 1 :(得分:0)

使用' findpeaks'函数,如果你有信号处理工具箱。

[y,locs]=findpeaks(-x) 

会找到当地的最小值。此功能有很多选项可以处理各种特殊情况,因此非常有用。