【问题标题】:Matlab: How to find values of properties of variablesMatlab:如何找到变量属性的值
【发布时间】:2015-05-16 11:57:48
【问题描述】:

我有一个 matlab 文件,我们称之为 dataset.mat。将 dataset.mat 加载到工作区时,它包含几个变量,所有这些变量都是定义为类的对象。我们称这些变量为:

varObj1 varObj2 varObj3 ... varObjN

现在所有这些变量都包含在对象类中定义的属性。假设 varObj1 具有以下属性:

prop1 prop2 prop3 ... propM

所有这些属性都有一些值,可以是数字、文本或数组。

我有 varObj 和所有道具的所有文件名的列表:varObjList 和 propList。

现在的问题是:如何以某种自动化方式提取所有这些属性的值? IE。制作某种脚本,进入每个 varObj 并将该对象的每个属性提取到另一个文件中,例如:

newFile = varObjList(i).propList(j)

要挑出第 i 个 varObj 的第 j 个属性的值?

【问题讨论】:

  • “将该对象的每个属性提取到另一个文件”:另一个文件是什么样的?请给出一个完整的示例,其中包含您要达到的目标的数据。
  • 您在寻找properties 函数吗?
  • 我只是想将一个属性的值复制到一个新变量中。假设属性是 Price1=1.25 和 Price2=1,50,现在我想将这两个数字添加到一个名为 TotalPrice=2.75 的新变量中。
  • 我试过属性函数,假设Price1和Price2是对象PriceList的属性,那么properties(PriceList)给出结果'Price1'和'Price2',而不是值1.25和1.50他们持有。

标签: matlab object properties


【解决方案1】:

这对你有用吗?

vO1 = metaclass(varObj1);
pO1 = vO1.PropertyList;
pNames = {pO1.Name};
value1 = varObj1.(pNames{1})

而且看了丹的评论,就更简单了:

pNames = properties(varObj1);
value1 = varObj1.(pNames{1})

【讨论】:

  • 感谢您的想法,当完整地写出 varObj1 的名称时,例如 value = NameOfVarObject1.(pNames{i}) 实际上可以解决问题。现在的问题是所有 varObj 的名称都在一个名为 varObjList 的列表中,并且命令 value = varObjList(j).(pNames{i}) 没有给出第 j 的第 i 个属性的内容varObj.
  • 您指的是哪种列表?如果是元胞数组,则必须使用{},即varObjList{j}.(pNames{i})
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 2017-05-17
  • 2022-11-21
相关资源
最近更新 更多