我想澄清如何在matlab中控制从函数返回变量,例如,让我们考虑一下这段代码
function [x y z]=percentage(a)
n=length(a);
maximum=0;
minimum=0;
subst=0;
minus=0;
plus=0;
minus_perc=0;
plus_perc=0;
for i=1:1:n
if a(i)>0
plus=plus+1;
else
minus=minus+1;
end
end
minuc_perc=minus/n;
plus_perc=plus/n;
maximum=max(minus_perc,plus_perc);
minimum=min(minus_perc,plus_perc);
subst=maximum-minimum;
x=plus_perc;
y=minus_perc;
z=subst*100;
if plus_perc>minus_perc
disp('among the successful people,relevant propession was choosen by');
disp(z)
disp('% people');
else
disp('among the successful people,irrelevant propession was choosen by');
disp(z);
disp('% people');
end
end
Run Code Online (Sandbox Code Playgroud)
我想回到的是plus_proc,min_proc和subst,但是当我运行下面的命令,结果得到这样的
[c d e]=percentage(a)
among the successful people,relevant propession was choosen by
58.3333
% people
c =
0.5833
d =
0
e =
58.3333
Run Code Online (Sandbox Code Playgroud)
所以我觉得有些不对劲,阵列是这样的
a =
1 -1 1 1 -1 1 -1 -1 1 1 1 -1
Run Code Online (Sandbox Code Playgroud)
这样的人再一次,我想回到plus_proc,minus_proc和subst
要在matlab中返回变量,只需指定一个指定的返回参数即可.例如:要返回我将使用的五号:
function [foo] = gimmeFive()
foo = 5;
end
Run Code Online (Sandbox Code Playgroud)
你的代码没有给你正确的答案,因为你有一个错字:
minuc_perc=minus/n;
Run Code Online (Sandbox Code Playgroud)
应该
minus_perc=minus/n;
Run Code Online (Sandbox Code Playgroud)
您可以通过利用函数来大大简化find函数,如下所示:找到> 0的任何元素的indeces,计算它们.
plus = length(find(a > 0));
plus_perc = plus ./ length(a);
Run Code Online (Sandbox Code Playgroud)
或者如果你想削减更多:a> 0给我们一个0和1的向量,所以总结1
plus = sum(a > 0);
plus_perc = plus ./ length(a);
Run Code Online (Sandbox Code Playgroud)