gpt4 book ai didi

c++ - Matlab 到 C++ 的转换

转载 作者:行者123 更新时间:2023-11-30 02:43:44 27 4
gpt4 key购买 nike

我正在尝试基于 matlab 代码用 C++ 编写程序,但我不理解某些语法并且我不习惯动态编程 -

[~, min_index] = min(new_energy(min_l,L_a(min_l):L_b(min_l)));
min_index = L_a(min_l) + min_index - 1; % correct index in the entire image

其中“new_energy”是一个矩阵。

我的问题是:

1.你如何找到一个术语的最小值(在第一行)?好像我不明白这个:符号。

2.还有 [~,min_index] 是什么意思?

最佳答案

在 MATLAB 中,冒号符号 : 表示我们指的是一个值范围或只是一个值数组。

冒号运算符用于生成一系列值,例如1:5 将返回数组 [1 2 3 4 5]。阅读有关冒号运算符的更多信息 here .

所以 L_a(min_l):L_b(min_l) 是一个数值范围。例如,假设 L_a(min_l) 的值为 10L_b(min_l) 的值为 20,那么结果范围将是:

[10 11 12 13 14 15 16 17 18 19 20]

现在,矩阵上的括号运算符 ( index operator ) 用于访问更大矩阵的子矩阵。它需要一个整数或一个整数范围来指定我们要访问的子矩阵的范围。所以在下面一行

new_energy(min_l, L_a(min_l):L_b(min_l))

我们正在从 new_energy 矩阵中选择一个子矩阵。该子矩阵实际上是矩阵的行号 min_l 以及我之前解释的范围指定的所有列。因此,通过执行此语句,我们将获得矩阵的一行作为输出。

接下来我们在刚刚提取的行上执行 MATLAB 的 min 函数。

min 的变体MATLAB 的函数可以返回最小值以及该最小值在范围内的索引。

[minValue, indexOfMinValue] = min(...);

如果 MATLAB 函数返回多个值,并且我们指定 ~ 来代替返回变量,这意味着我们不需要该结果并且函数不返回该值。

[~,min_index] 表示我们只获取最小值的索引而不是最小值本身,因为我们已经指定我们不需要它。

关于c++ - Matlab 到 C++ 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25888674/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com