【问题标题】:How to access and modify values of variables in matlab workspace?如何访问和修改 matlab 工作区中的变量值?
【发布时间】:2020-01-22 01:44:12
【问题描述】:

我的 matlab 工作区中的变量很少,比如说 a 和 b。 例如:a = 1:5; b = 1:10;

我使用who 来获取他们的名字。

点赞listVariables = who;

现在listVariables 有变量名ab,但我不知道如何访问它们的值,以便对它们进行一些数学运算。

【问题讨论】:

  • 我完全不建议这样做,但是,请检查 matlab 的eval 函数(eval(listVariables(1).name)
  • 请问用例是什么?我的意思是,你为什么要对你不知道的变量进行数学运算?
  • @NickyMattsson,我正在使用 matlab 滤波器设计工具,它可以选择将工具中设计的系数导入工作区。在这些系数上,我想做一些定点转换、缩放等
  • 变量名称不是预定义的,这意味着它们总是相同的吗?
  • 可以在导出过程中更改名称。也许保存到垫子并加载严格是一种选择。

标签: matlab


【解决方案1】:

看起来evalin 是您正在搜索的内容:

a_val = evalin('base', listVariables{1});
b_val = evalin('base', listVariables{2});

evalin 的优点是可以从函数中执行(超出工作空间的范围)。

例子:

在工作区:

a = 1:5; b = 1:10;

my_fun.m的内容:

function my_fun()

listVariables = evalin('base', 'who');

a_val = evalin('base', listVariables{1});
b_val = evalin('base', listVariables{2});

display(a_val);
display(b_val);

my_fun() 执行结果:

a_val =

     1     2     3     4     5


b_val =

     1     2     3     4     5     6     7     8     9    10

注意:在某些情况下evalin 很有用,但这不是一个好的编码习惯。

【讨论】:

  • 正是我想要的,谢谢
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 2015-02-14
  • 2017-09-27
相关资源
最近更新 更多