2013-08-23 3 views
0
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; 
    } 

этот код сравнивается с мин функции, чтобы получить минимальное значение ч или u1, может кто-нибудь сказать мне, почему MATLAB генерировать такой синтаксис? почему цикл while, хотя я не вижу никаких изменений внутри блока while!Matlab с встроенным кодировщиком код

код MATLAB

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

уведомление есть две петли для функции макс мин

+0

Вероятно, этот способ является побочным эффектом того, как вы написали свой код Matlab. Можете ли вы опубликовать код Matlab? – shoelzer

+0

'b_k' начинается с' 1' (в строке 'b_k = 1;' и становится '2' (в строке' b_k = 2; '), что явно является изменением внутри блока. Не знаете, почему это – Floris

+0

Я отредактировал сообщение, что еще, что повторение второго цикла без изменения кода! – aah134

ответ

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 

Продолжайте модификации тестового кода немного в то время, чтобы сделать это как код, который вызвал этот вопрос и, возможно, вы обнаружите, что именно вызывает результат вы видите.

Смежные вопросы