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)));
注意最大最小功能有两个循环
答案 0 :(得分:2)
我无法解释为什么生成的代码会像这样结束,但它必须与您编写Matlab代码的方式有关。它看起来很奇怪,但如果它有效则可能没关系。
如果您对生成器感到好奇,请从非常简单的事情开始,观察生成的代码如何随着代码变得更复杂而发生变化。尝试以下变体:
z = min(x, y);
z = max(w, min(x, y));
for i = 1:length(v)
z(i) = max(w, min(v(i), y));
end
继续修改测试代码,使其像提示此问题的代码一样,并且您可能会发现究竟是什么触发了您所看到的结果。