我们可以配置MATLAB让变量的局部作用域最小吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们可以配置MATLAB让变量的局部作用域最小吗?相关的知识,希望对你有一定的参考价值。

我们可以配置MATLAB让变量的局部作用域最小吗?

我想让Matlab类似于下面的C。

% after some configure ...

for i=1:1:100
    a=i*i
end
% here we can not using 'a' any more for it have local scope in for loop. 

为什么我要这样,因为整个脚本的作用域有时会导致难以找到错误。

例如:

% get accumulate of b via 100 times of x_0
b=0;
for i=1:1:100
   x0=100
   b=b+x0
end

% get accumulate of a via 100 times of x_0
a=0
for i=1:1:100
   x_0=200
   a=a+x0    %mistype x_0 to x0, and hard to find
end

谢谢。

答案

我认为没有任何方法可以在脚本/循环中强制使用本地作用域。但是,您可以在单独的文件或in the same file中创建函数。每个函数都有自己的本地范围。因此,对于您的示例,您可以使用以下内容创建文件myScript.m

% get accumulate of b via 100 times of x_0
accum_b(100)

% get accumulate of a via 100 times of x_0
accum_a(200)

function a = accum_a(x0) 
    a = 0;
    for k = 1:100
        a = a + x0;
    end
end

function b = accum_b(x0) 
    b = 0;
    for k = 1:100
        b = b + x0;
    end
end

在此特定示例中,您当然可以使用不同的accum_a输入调用两次x0函数。但是,您在文件中定义的每个函数都将具有其自己的局部作用域,因此在错误地输入x_0/x0时将导致错误。

以上是关于我们可以配置MATLAB让变量的局部作用域最小吗?的主要内容,如果未能解决你的问题,请参考以下文章

matlab局部变量和全局变量的区别

11将局部变量的作用域最小化

为什么要将局部变量的作用域最小化?

matlab global定义全局变量的问题

matlab编程

Matlab