MATLAB - 如何解决"不同结构之间的订阅分配"错误

时间:2015-08-31 20:25:14

标签: matlab

我有一个名为A的结构,它有一个名为B的[1x1]结构,当我在命令行中运行A.B时,它会返回两种类型的答案:

ans = 
    X: 3
    Y: 2
    Z: 4

ans = 
    X: 1
    Y: 5
    Z: 9
    W: 4
    V: 2

编辑: 我想要做的是将X的所有值放入一个向量中,这样向量看起来像这样:[3,1,...]

为此,我首先创建一个名为AB的向量,以便将[AB.X]放入另一个可以使用的向量中。

我目前的策略是运行像这样的for循环:

for idx = 1:length(A)
    AB(idx) = [A(idx).B];
end

但我收到错误,"不同结构之间的订阅分配。"我认为这是因为B的某些值有3个部分,而其他的有5个部分。

我该如何解决这个问题?

或者有没有比使用for循环更好的方法?

1 个答案:

答案 0 :(得分:1)

结构不能与不同的字段连接在一起。你可以做到的一件事是将所有结构元素放入一个单元格数组中,然后调用cellfun来取消引用X:

 ABX = cellfun(@(c) c.X, {A.B}) 

资源:

Comma separated lists

cellfun

Anonymous functions