Matlab c 嵌入式编码器代码


  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 块内没有看到任何变化!

矩阵实验室代码

v(k+1) = max(vmin(k+1), min(vplus, vmax(k+1)));

请注意,最大最小值函数有两个循环

我无法解释为什么生成的代码会这样结束,但这肯定与您编写 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

继续一次修改测试代码,使其像提示此问题的代码一样,也许您会发现究竟是什么触发了您所看到的结果。

最新更新