matlab - 求 3 个数字之间的最小值

标签 matlab minimum

如何找到三个非零数字中最小的一个。

我尝试引入一个非常小的数字eps = 1e-6(我的数字为零或明显大于eps)并在min(x,eps)、min(y,eps)之间进行测试)等我什么也没得到。有没有办法用函数来做到这一点?

最佳答案

如果数字全部存储在向量 x 中,您可以执行以下操作:

x = [1 0 2 0 3 0 4];
y = min(x(x>0));

这是基于您的陈述

numbers are either zero or clearly larger than eps

如果您的意思是较大的幅度并且您想接受非零负值,您可以使用:

x = [1 0 -2 0 3 0 4];
y = min(x(x~=0));

请注意,当存在负数时,这将返回最大的负数,而不是具有最小非零值的数字。要获取具有最小非零幅度的数字,您可以使用:

x = [1 0 -2 0 3 0 4];
xnonzero = x(x~=0);
[~,idx] = min(abs(xnonzero));
y = xnonzero(idx);

看起来不太优雅。可能有更直接的方法。

关于matlab - 求 3 个数字之间的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19694435/

相关文章:

built-in - 如何获取覆盖的内置函数的句​​柄?

arrays - 无法将数组添加到 Matlab 字典中

algorithm - 我怎样才能制作出满足某些条件的最佳树

用于按住键的 matlab KeyPressFcn

algorithm - 使用粒子群优化的最短路径

graph - 用于 Java 的最低成本 Steiner 树库

c++ - 使用 SSE 的水平最小值和最大值

java - 介意帮助第一次遇到减速带的新人吗?

vb.net - VB.Net 2010 中进度条超过最大/最小值?

Matlab - 找到两个椭圆之间的交点 - 牛顿法 - 奇怪的结果