Security 保护工作空间变量

Security 保护工作空间变量,security,variables,matlab,history,workspace,Security,Variables,Matlab,History,Workspace,也许你已经克服了以下情况。您正在工作,开始一个接一个地运行脚本,然后突然意识到您更改了感兴趣的变量的值。除了备份工作区外,是否没有其他方法来保护变量 有没有办法在工作区中选择要保护的单个变量 除了查看命令历史记录寄存器外,是否还存在一个历史记录寄存器,记录给定给某个特定变量的不同值?按顺序运行脚本会导致灾难。如果可能,尝试将这些脚本转换为函数。这将很自然地消除覆盖正在运行的变量的问题,因为函数中的变量是这些函数的本地变量,而脚本中的变量是工作区的本地变量,因此很容易被单独的脚本访问/覆盖,这些脚

也许你已经克服了以下情况。您正在工作,开始一个接一个地运行脚本,然后突然意识到您更改了感兴趣的变量的值。除了备份工作区外,是否没有其他方法来保护变量

有没有办法在工作区中选择要保护的单个变量


除了查看命令历史记录寄存器外,是否还存在一个历史记录寄存器,记录给定给某个特定变量的不同值?

按顺序运行脚本会导致灾难。如果可能,尝试将这些脚本转换为函数。这将很自然地消除覆盖正在运行的变量的问题,因为函数中的变量是这些函数的本地变量,而脚本中的变量是工作区的本地变量,因此很容易被单独的脚本访问/覆盖,这些脚本通常是无意中访问/覆盖的,尤其是当您使用变量名如result时。

按顺序运行脚本会导致灾难。如果可能,尝试将这些脚本转换为函数。这将很自然地消除覆盖正在运行的变量的问题,因为函数中的变量是这些函数的本地变量,而脚本中的变量是工作区的本地变量,因此很容易被单独的脚本访问/覆盖,这些脚本通常是无意中访问/覆盖的,特别是如果您使用变量名,如result。

否,没有工作区历史记录。我会说,如果你遇到了你所描述的问题,你应该考虑改变你的编程风格。 我建议你:

在脚本中放入那么多代码或信息,这样您就可以从一个空的工作区开始完成任务。出于这个原因,我总是在主文件的开头清除所有内容

<>如果它变得太复杂,请考虑调用函数。如果需要由另一个脚本或函数生成的值,请将该脚本重写为函数,并在主文件中调用它或保存变量。加载变量是完全可以的。但按顺序运行脚本会导致灾难


不,没有工作区历史记录。我会说,如果你遇到了你所描述的问题,你应该考虑改变你的编程风格。 我建议你:

在脚本中放入那么多代码或信息,这样您就可以从一个空的工作区开始完成任务。出于这个原因,我总是在主文件的开头清除所有内容

<>如果它变得太复杂,请考虑调用函数。如果需要由另一个脚本或函数生成的值,请将该脚本重写为函数,并在主文件中调用它或保存变量。加载变量是完全可以的。但按顺序运行脚本会导致灾难


我也同意,在这种情况下,编写函数是有帮助的。但是,如果您正在处理非常大的数据集,那么您需要小心地以一种不会在函数中复制多个变量的形式编写代码,否则您可能会遇到内存不足的问题。

我也同意,在这种情况下,编写函数是有帮助的。但是,如果您正在处理非常大的数据集,那么您需要小心地以一种不会在函数中复制多个变量的形式编写代码,否则您可能会遇到内存不足的问题。

+1。一定要学会写函数而不是脚本。这使您的代码更灵活,对未来更有用。+1。技术上的挑剔:脚本中的变量也是本地变量;它们只是基本工作区的局部,在Matlab会话的整个生命周期中都会持续存在,并且所有脚本都在其中运行。全局变量是用Global关键字声明的,可以从声明它们的任何工作区访问。所以你告诉我,一个优秀的Matlab程序员所做的一切都是通过函数完成的?如果每次我想做一些事情,我必须做一个不会变得更乏味、更不灵活的函数?回复:彼得斯通的评论-不,这不是我要说的。有时,脚本比函数更合适。但是如果你遇到了OP提到的问题,这意味着你所做的任何事情都可能是最好的函数。一定要学会写函数而不是脚本。这使您的代码更灵活,对未来更有用。+1。技术上的挑剔:脚本中的变量也是本地变量;它们只是基本工作区的局部,在Matlab会话的整个生命周期中都会持续存在,并且所有脚本都在其中运行。全局变量是用Global关键字声明的,可以从声明它们的任何工作区访问。所以你告诉我,一个优秀的Matlab程序员所做的一切都是通过函数完成的?如果每次我想做点什么,我就必须做一个不会变得更乏味的函数
不太灵活?回复:彼得斯通的评论-不,我不是这么说的。有时,脚本比函数更合适。但是,如果您遇到了OP提到的问题,这意味着您所做的任何事情都可能最好使用函数。