我可以在不输出函数的情况下访问函数的局部变量吗?

时间:2015-01-04 20:57:36

标签: matlab variables

我在MATALB中有一个如下所示的函数:

function [a, b] = SumIt(I1, I2)

    a = sum(I1);
    b = sum(I2);
    c = sum(I1/I2);

end

在命令窗口中,我运行该函数但我无法访问c变量。我知道我可以执行类似[a, b, c] = SumIt(I1, I2)之类的操作并访问c变量。我可以在不输出变量的情况下访问变量c吗?

问题是我有很多输出没用,但我需要访问它们。我怎么能这样做?

我尝试使用global,但我得到了同样的错误。

function [a, b] = SumIt(I1, I2)
    global c;

    a = sum(I1);
    b = sum(I2);
    c = sum(I1/I2);

end
>> [a, b] = SumIt([1 4 6], [1 2 3]);
>> c
Undefined function or variable 'c'.

1 个答案:

答案 0 :(得分:1)

这样做的唯一方法是拥有一个函数脚本,该脚本还将SumIt声明为附加函数,并在c范围之外声明globalSumIt {1}}。请考虑以下测试函数:

function [] = test_func()

global c;

function [a, b] = SumIt(I1, I2)        
    a = sum(I1);
    b = sum(I2);
    c = sum(I1/I2);    
end

[t1, t2] = SumIt(6, 3);
disp(['t1 = ' num2str(t1)]);
disp(['t2 = ' num2str(t2)]);
disp(['c = ' num2str(c)]);

end

我创建了一个名为test_func的测试函数,我们将c声明为global,但SumIt范围内 }。之后,我将SumIt声明为嵌套函数,然后尝试使用一些示例数字来调用它。然后,我显示SumIt以及c的输出。自I1 = 6, I2 = 3起,我们应该c = 2

这是我运行test_func时所得到的:

>> test_func

t1 = 6
t2 = 3
c = 2

次要说明

看起来I1I2是根据您使用sum的上下文判断的向量。因此,如果我解释的是正确的,你应该考虑使用逐个元素的除法运算符./。您是否尝试将I1的每个元素除以I2,然后对结果求和?如果是这种情况,您需要更改您的功能,使其变为:

function [a, b] = SumIt(I1, I2)        
    a = sum(I1);
    b = sum(I2);
    c = sum(I1./I2);
end