MATLAB循环具有不同的值

时间:2016-07-25 10:08:52

标签: matlab for-loop

我有两个不同的函数将值发送给另一个。我的问题是给出的随机值也是相同的所有参数。

这是我的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 个答案:

答案 0 :(得分:1)

你是否意识到你做了4次同样的事情?这就是为什么你没有得到新的价值,没有。

你的代码确实:

  • test_main(1)我假设1,否则你没有显示所有输出。
  • 创建随机w
  • if w<0.5 ...
  • 致电test_sub(status)

    • 这里,首先是for variable = 1:4,或者#34;重复所有内容4次&#34;
    • 对同一disp
    • 重复status次4次
    • 进行。

为什么在test_sub函数中有for循环?该函数应该测试结果,并且只应该这样做。它应该看起来像:

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);,并将名称i更改为ii(因为i是matlab中的虚数单位)