2016-07-25 104 views
0

我有兩個不同的功能,發送一個值到另一個。我的問題是給出的隨機值也是一樣的所有參數。MATLAB循環與不同的值

這是我test_main功能

function[] = test_main(x) 

for i = 1:x %loop for time 

w=rand; %random error generator. 
    if w<0.5 
     status=1; 
    else 
     status=99; 
    end 

fprintf('\n Time is %d hour after count start . \n', i); 

test_sub(status); 


end 
end 

這是我test_sub功能

function[a] = test_sub(z) 

for variable = 1:4 
    fprintf('\nPARAMETER %d ', variable) 


fprintf('\n Value is %d \n', z); 

if (z==1) %if input equal to 0 
    j=1; %store temporary value to j 
    a=j; 
    disp('new value is 1') 

elseif (z==99) 
    j=1; 
    a=j; 
    disp('new value is 100') 

else 
    disp('unidentified error') 
end 

end 
end 

的代碼有沒有錯誤只是循環部分不能正常工作。兩個函數的輸出如下:

Time is 1 hour after count start . 

PARAMETER 1 
Value is 99 
new value is 100 

PARAMETER 2 
Value is 99 
new value is 100 

PARAMETER 3 
Value is 99 
new value is 100 

PARAMETER 4 
Value is 99 
new value is 100 

被分配給「value」的整數在所有四個參數上都是相同的。我希望每個參數有不同的價值,它會出現這樣的:

Time is 1 hour after count start . 

PARAMETER 1 
Value is 1 
new value is 1 

PARAMETER 2 
Value is 1 
new value is 1 

PARAMETER 3 
Value is 99 
new value is 100 

PARAMETER 4 
Value is 1 
new value is 1 

回答

1

你是否意識到你正在做同樣的事情4次?這就是爲什麼你沒有得到新的價值觀,沒有。

你的代碼所做的:

  • test_main(1)我假設1,否則你無法顯示所有輸出。
  • 創建隨機w
  • if w<0.5 ...
  • 呼叫test_sub(status)

    • 這裏,第一件事就是for variable = 1:4,或 「重複所有4次」
    • 重複disp 4次相同status
    • out。

爲什麼你有沒有爲test_sub函數內部循環?該函數應該測試結果,並且只應該這樣做。它應該看起來像:

function[a] = test_sub(z,count) 

    fprintf('\nPARAMETER %d ', count) 
    fprintf('\n Value is %d \n', z); 

    if (z==1) %if input equal to 0 
     j=1; %store temporary value to j 
     a=j; 
     disp('new value is 1') 

    elseif (z==99) 
     j=1; 
     a=j; 
     disp('new value is 100') 
    else 
     disp('unidentified error') 
    end 

    end 
end 

而負責重複這件事的是應該的!如果你想要新的參數,改變它循環的次數,而不是它測試的次數!

test_main(4) % will repeat the test 4 times 

也改變呼叫到test_sub()test_sub(status,ii); ADN名稱iii(如i是在Matlab虛數單位)