我有两个不同的函数将值发送给另一个。我的问题是给出的随机值也是相同的所有参数。
这是我的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
答案 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中的虚数单位)