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

Arrays 如何在matlab中从数组中找到最小值?,arrays,matlab,minimum,Arrays,Matlab,Minimum,我想提取图中用黑色轮廓标记的两个点(即它们的值)。这些最小点是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) , horizon

我想提取图中用黑色轮廓标记的两个点(即它们的值)。这些最小点是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) 

将找到局部极小值。此函数有大量选项可用于处理各种特殊情况,因此非常有用。

对不起,在看到您的图之前,我误解了这个问题。我将编辑并附加图像。您是否也可以发布您使用的数据?假设您有信号处理工具箱,您是否尝试过(只需翻转输入数据的符号以找到maxima)我认为你从错误的角度看待这个问题。如果您感兴趣的只是提取两个最小点,那么我建议应用一个较大的均值/中值滤波器来去除局部最小值。在此之后,
findpeaks
,或者像我发布的一个简单的峰值检测算法,应该可以很好地工作。您可能希望将其与阈值相结合,即仅接受低于
y=90的最小值。您可以根据可用的数据对此进行调整。为什么使用虚拟数据而不是问题中的数据?@IKavanagh因为OP没有发布数据,只是最小值的位置和值,而不是他用于创建绘图的实际数据。基本上我正在处理眼睛跟踪部分,即睁眼和闭眼。上图是关于睁眼的平均值,显示了强度变化。所以我对那些强度变化的点感兴趣,比如从负片到正片(第一次变化)和从正片到负片(第二次强度变化),所以我希望这些值实际上来自于整个极小值,以便计算距离。这些值是最小值。所以我想从an中提取这两个最小值array@usman,如果你用你的意思注释你的图表,也许会有所帮助。从你的描述我真的不明白。此外,不确定是否相关,但在找到最小值之前,您是否尝试过应用简单的平滑过滤器?@Adriaan发布的位置和最小值是OP正在处理的数据。根据他的问题和这里的评论,他想从极小值数组中提取最小值(还不确定是哪个),并计算它们的位置之间的距离。不需要额外的数据。是的,felix我已经用上面的命令计算了最小值,现在我想要的是计算所需点之间的最小值。所需点如附件所示。请看一眼,闪光(locs)将给出最小值之间的距离。不确定你所说的“期望值之间”是什么意思?期望值意味着,我的图表上有10个极小值点,但我对起点和终点感兴趣,这意味着起点是出现负到正峰值的第一个极小值,终点是出现正到负变化的第二个极小值。我的最小分数是-86.5647-80.3647-81.3588-106.9882-77.0765-77.8235-92.2353-106.2235-115.3118-98.3706,我对第二最小分数80.36和第五最小分数77.07感兴趣。这就是我想要的观点。我想要的是提取它们的LOC并计算它们之间的距离。你明白了吗?