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

Can I access a local variable of a function without outputting it?

我在 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'.

唯一可以做到这一点的方法是拥有一个函数脚本,该脚本还将 SumIt 声明为附加函数,并将 c 声明为范围外的 global SumIt 个。考虑如下所示的测试函数:

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 的测试函数,我们在其中声明 cglobal,但它在范围 之外 SumIt 个。之后,我将 SumIt 声明为嵌套函数,然后尝试使用一些示例数字调用它。然后我显示 SumItc 的输出。由于 I1 = 6, I2 = 3,我们应该得到 c = 2.

这是我在 运行 test_func:

时得到的
>> test_func

t1 = 6
t2 = 3
c = 2

小注

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

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