簡體   English   中英

如何在Matlab中從數組中找到最小值?

[英]How can I find minimum values from array in matlab?

圖片

我想提取圖中用黑色輪廓標記的兩個點(即它們的值)。 這些最小點是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*')

極小值

-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

從您的問題中尚不清楚您真正要尋找的是什么,但是下面的划線員將為您提供當地的最低要求:

% 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;

在此處輸入圖片說明

如果您具有信號處理工具箱,請使用“ findpeaks”功能。

[y,locs]=findpeaks(-x) 

會找到當地的最小值。 此功能有很多選項可以處理各種特殊情況,因此非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM