我在程序中使用对象数组,每个对象都有多个属性。我希望能够从这个对象数组中提取单独的数组,每个属性一个数组。 这是相关代码片段:
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/