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

标签 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 = '字符串1' ans = '字符串2' ...

当我尝试打电话时

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

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

但是,当我将其写为

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

我收到回复了 类名 = 'double' 且大小 = 1x1。

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

谢谢, 保罗

最佳答案

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

thing=[dailyDataMatrix.attribute];

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

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

关于arrays - matlab中如何从对象数组中获取属性数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264710/

相关文章:

java - 为什么我的循环似乎从索引 1 开始?

matlab - 如何在Matlab中导入pts文件

java - Setter 没有为 java 对象设置值

java - 确保对象构建前或构建时的有效性

arrays - 如何在 Angular 4 或 5 中按数组分组?

java - 我可以解析日期以适合字符串数组吗?

Javascript - 无限滚动 JSON 数组?

matlab - 训练用于图像分割的神经网络

python - 如何解决 Python 中的函数逼近任务?

javascript - 在 JavaScript 中模拟 super