我在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'.
答案 0 :(得分:1)
这样做的唯一方法是拥有一个函数脚本,该脚本还将SumIt
声明为附加函数,并在c
范围之外声明global
为SumIt
{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
看起来I1
和I2
是根据您使用sum
的上下文判断的向量。因此,如果我解释的是正确的,你应该考虑使用逐个元素的除法运算符./
。您是否尝试将I1
的每个元素除以I2
,然后对结果求和?如果是这种情况,您需要更改您的功能,使其变为:
function [a, b] = SumIt(I1, I2)
a = sum(I1);
b = sum(I2);
c = sum(I1./I2);
end