2013-08-23 28 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; 
    } 

這段代碼進行比較,分功能得到H或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 

不斷修改測試代碼位在同一時間,使之像,促使這個問題的代碼,也許你會發現什麼觸發你所看到的結果。