如何从matlab中的对象数组中获取属性数组

时间:2014-03-08 03:40:22

标签: arrays matlab oop

我在程序中使用了一个对象数组,每个对象都有几个属性。我希望能够从这个对象数组中提取单独的数组,每个属性都有一个数组。 这是相关代码的片段:

dailyDataMatrix(m,n)=dailyData('',''); %creates an mxn array of dailyData objects
for i=1:m
  for j=1:n
  dailyDataMatrix(i,j)=dailyData(datainput1, datainput2)%dailyData constructor, sets attributes
  end
end
dailyDataMatrix.attribute

但是当我尝试访问上面代码中的某个属性时,比如字符串类型,我得到一个奇怪的结果。我得到了别的东西,而不是获得一串字符串。当我尝试打印它而不是打印数组时,它会打印一系列单独的值

ans ='string1' ans ='string2' ...

当我试着打电话时

size(dailyDataMatrix.attribute)
className = class(dailyDataMatrix.attribute)

我明白了 “使用大小的错误:输入参数太多”和 “使用class的错误:必须从类构造函数中调用CLASS函数。”

然而,当我把它写成

thing=dailyDataMatrix.attribute
className = class(thing)
size(thing)

我收到回复 classname ='double',size = 1x1。

为什么这不会返回与dailyDataMatrix相同大小的数组?另外一个问题是为什么编写上述代码的两种不同方式会产生不同的结果?我怎样才能得到我想要的结果?

谢谢, 保罗

1 个答案:

答案 0 :(得分:3)

如果类型相同,您可以使用单元格数组或使用方括号捕获所有输出。对于常规数组,当所有值都使用相同类型时,

thing=[dailyDataMatrix.attribute];

如果类型不同,您可以使用

thing = cell(1,N); % N is the number of elements in dailyDataMatrix
[thing{:}] = dailyDataMatrix.attribute;