我可以在不输出的情况下访问函数的局部变量吗?
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
的测试函数,我们在其中声明 c
为 global
,但它在范围 之外 SumIt
个。之后,我将 SumIt
声明为嵌套函数,然后尝试使用一些示例数字调用它。然后我显示 SumIt
和 c
的输出。由于 I1 = 6, I2 = 3
,我们应该得到 c = 2
.
这是我在 运行 test_func
:
时得到的
>> test_func
t1 = 6
t2 = 3
c = 2
小注
从您使用 sum
的上下文来看,I1
和 I2
似乎是向量。因此,如果我的解释是正确的,您可能应该考虑使用逐元素除法运算符 ./
。您是否尝试将 I1
的每个元素除以 I2
然后对结果求和?如果是这种情况,您需要更改函数,使其变为:
function [a, b] = SumIt(I1, I2)
a = sum(I1);
b = sum(I2);
c = sum(I1./I2);
end
我在 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
的测试函数,我们在其中声明 c
为 global
,但它在范围 之外 SumIt
个。之后,我将 SumIt
声明为嵌套函数,然后尝试使用一些示例数字调用它。然后我显示 SumIt
和 c
的输出。由于 I1 = 6, I2 = 3
,我们应该得到 c = 2
.
这是我在 运行 test_func
:
>> test_func
t1 = 6
t2 = 3
c = 2
小注
从您使用 sum
的上下文来看,I1
和 I2
似乎是向量。因此,如果我的解释是正确的,您可能应该考虑使用逐元素除法运算符 ./
。您是否尝试将 I1
的每个元素除以 I2
然后对结果求和?如果是这种情况,您需要更改函数,使其变为:
function [a, b] = SumIt(I1, I2)
a = sum(I1);
b = sum(I2);
c = sum(I1./I2);
end