2013-05-01 100 views
2

我想澄清一下如何控制从MATLAB函数的变量返回,对于〔实施例让我们考虑这个代码如何控制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 

我想回到什么是plus_procmin_procsubst ,但是当我运行下面的命令,结果得到这样

[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 

,所以我觉得什么是错的,阵列是这样

a = 

    1 -1  1  1 -1  1 -1 -1  1  1  1 -1 

这样的人再一次,我想回到plus_procminus_procsubst

+0

我发现我的错误,而不是minus_proc,有minuc_proc,对不起一个。如果你喜欢答案,我会upvote并接受 – 2013-05-01 14:09:55

回答

5

要返回MATLAB中的一个变量,你只分配到指定的回报参数之一。例如:返回数字五,我会用:

function [foo] = gimmeFive() 
    foo = 5; 
end 

你的代码是不是给你正确的答案,因为你有一个错字:

minuc_perc=minus/n; 

应该

minus_perc=minus/n; 

通过利用find函数,可以极大地简化函数,如下所示: 查找> 0的任何元素的元素,对它们进行计数。

plus = length(find(a > 0)); 
plus_perc = plus ./ length(a); 

或者,如果你想减少甚至多出: α> 0让我们0和1的矢量,所以总结1的

plus = sum(a > 0); 
plus_perc = plus ./ length(a); 
+0

非常感谢@Alan – 2013-05-01 14:21:16