MATLAB - 如何解决"Subscripted assignment between dissimilar structures"错误



我有一个名为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循环更好的方法吗?

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

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

资源:

逗号分隔列表

cellfun

匿名函数

相关内容

最新更新