Matlab中嵌套函数和匿名函数中的变量

本文讨论了MATLAB中嵌套函数和匿名函数的变量作用域规则,强调了不能动态添加变量到这些函数的工作区。当尝试动态赋值时,MATLAB会抛出错误。建议的做法包括指定`load`函数的变量名、避免使用`eval`等动态执行函数,将脚本转换为函数并传递参数,以及在调试时在基础工作区中赋值。通过显式声明函数内的变量可以避免动态赋值错误。
摘要由CSDN通过智能技术生成

目录

嵌套函数和匿名函数中的变量


嵌套函数和匿名函数中的变量

        嵌套函数和匿名函数的作用域规则要求在函数内使用的所有变量都存在于代码文本中。

        如果尝试向匿名函数、嵌套函数或包含嵌套函数的函数的工作区中动态添加变量,MATLAB® 将引发以下形式的错误

Attempt to add variable to a static workspace. 

        下表介绍了尝试动态赋值的典型运算以及推荐的避免动态赋值的方法。

运算类型

避免动态赋值的最佳做法

load

指定变量名称作为load函数的输入。或者,对从load函数到结构体数组的输出赋值。

eval、evalin 或 assignin

​如果可能,避免同时使用这些函数。可以参考eval 函数的替代方法。

调用 MATLAB 脚本创建变量

将脚本转换为函数并使用参数传递变量。这种方法还阐明了相应代码。

向 MATLAB 调试器中的变量赋值

在基础工作区中对变量赋值,例如

K>> assignin('base','X',myvalue)

        避免动态赋值的另一种方法是显式声明函数内的变量。例如,假定名称为 makeX.m 的脚本向变量 X 赋值。使用函数调用 makeX 并显式声明 X 可避免动态赋值错误,因为 X 位于函数工作区内。常用的变量声明方法是将变量值初始化为一个空数组:

function noerror
X = [];
nestedfx

   function nestedfx
      makeX
   end
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值