【问题标题】:Running a variable that is stored as string in matlab运行在matlab中存储为字符串的变量
【发布时间】:2017-07-20 14:36:54
【问题描述】:

这是交易,我有很多变量存储在 Excel 中。这些是我的 Simulink 模型使用的值。我想要做的是自动提取所有它们的描述。

到目前为止我所做的如下,

我从列中读取它们并定义了一个 txt 数组以将它们保存为字符串。 创建另一个字符串作为 s2 以将“.Description”字符串与变量名称结合起来。 我将它们组合并生成了另一个称为描述器的数组。 从 txt 数组中读取计数器的长度。 使用一个小的 while 循环为所有这些添加 .Description。

我卡住的地方是我无法运行它们并获取描述。

我使用了 eval() 但它失败了。有没有办法将这些字符串称为变量来获取描述?

clc
filename = 'variables.xlsx';
[num, txt] = xlsread('variables','A:A')
L=length(txt)
s2='.Description'
i=1;
while i<=L
    descriptioner(i) = strcat(txt(i),s2)
    i=i+1;
end

【问题讨论】:

  • 你能说明你是如何使用 eval() 并让它失败的吗?罗伊是对的,所以可能还有其他事情发生。也许您可以使用 eval() 命令和您传递的参数添加编辑。
  • 当我使用 () 而不是 {} 时失败了,但无法通过使用以下 descriptions(i)=eval(descriptioner{i}) 来自动化它

标签: arrays string matlab simulink


【解决方案1】:

尝试在执行循环之前将您的 descriptioner 变量分配为一个单元格。这是尝试的一种方法:

clc
filename = 'variables.xlsx';
[num, txt] = xlsread('variables','A:A');
descriptionsCell = cell(size(txt));
for i=1:numel(txt);
   descriptionsCell{i} = [txt{i},'.Description'];    
   fprintf(1,'The description of %s is %s\n',txt{i},eval(descriptionsCell{i}));
end

让我知道这是否有效。它可以在我的机器上运行一个模拟示例,但我总是在学习新事物。

【讨论】:

  • 优秀。很高兴听到;谢谢你告诉我。
  • 我在尝试将它们分配给数组时也遇到了一个小问题。 {} 不适合 ()。有什么想法可以克服这个吗?如下所示, output(i)=eval(descriptionsCell{i}) 或 "output=" 或 "output{}"。
  • 将文本字符串分配给数组的问题是文本字符串通常具有不同的长度,而数组要求每一行的长度相同。也就是说,对于一个 NxM 字符数组,N 行中的每一行都是 M 个字符长。我猜你的描述长度不一样。随时就您遇到的错误提出另一个问题,并在此处将指向该问题的链接作为评论发布。我自己或其他人都可以看到并跟进。
【解决方案2】:

为了执行字符串中给出的 MATLAB 命令,应使用eval()

【讨论】:

  • 如果我没看错问题,Deniz 尝试过,但失败了。
猜你喜欢
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多