【发布时间】:2013-08-23 13:53:55
【问题描述】:
b_k = 1;
while (b_k <= iv0[1]) {
h = vplus_data[0];
u1 = vmax->data[(int)((1.0 + (double)k) + 1.0) - 1];
if ((h <= u1) || rtIsNaN(u1)) {
minval_data_idx_0 = h;
} else {
minval_data_idx_0 = u1;
}
b_k = 2;
}
b_k = 1;
while (b_k <= iv0[1]) {
h = vmin->data[(int)((1.0 + (double)k) + 1.0) - 1];
if ((h >= minval_data_idx_0) || rtIsNaN(minval_data_idx_0)) {
} else {
h = minval_data_idx_0;
}
vplus_data[0] = h;
b_k = 2;
}
此代码与 min 函数进行比较以获得 h 或 u1 的最小值, 谁能告诉我为什么matlab会生成这样的语法?为什么是 while 循环,虽然我在 while 块内没有看到任何变化!
matlab 代码
v(k+1) = max(vmin(k+1), min(vplus, vmax(k+1)));
注意 max min 函数有两个循环
【问题讨论】:
-
这可能是您编写 Matlab 代码的一种副作用。可以贴一下 Matlab 代码吗?
-
b_k以1开头(在b_k = 1;行中,然后变为2(在b_k = 2;行中);显然这是块内部的变化。不知道为什么它在那里,但它就在那里。 -
我编辑了帖子,更重要的是,第二个循环重复没有任何代码更改!
-
我同意这很奇怪。更重要的问题——它有效吗?
-
是的,它有效,令我惊讶的是,总体而言,大函数比我所比较的 c++ 代码快 50%
标签: c matlab syntax matlab-coder