【问题标题】:matlab vertically concatenate logical indexed arraysmatlab垂直连接逻辑索引数组
【发布时间】:2017-06-16 14:02:23
【问题描述】:

我有一个 8x18 的结构,每个 cel 包含单个事件发生的列向量。我想从连接到单个数组中的某些字段中获取数据,而不必遍历它。我似乎无法找到一种方法将我感兴趣的字段垂直连接到一个数组中。

例如,我创建了以下结构,每个单元格出现 1 到 5 次:

s(62).vector(8,18).heading.occurrences=[1;2;3];
for i=1:62
    for j=1:8
        for k=1:18
            y=ceil(rand(1)*5);
            s(i).vector(j,k).heading.occurrences=rand(y,1);
        end
    end
end

现在我想获得几个单元格中的所有事件,同时在 i=1 时保持 i 不变。我试过的是:

   %fields of interest
   a=[1 26 45];
   x=[s(1).vector(a).heading.occurrences];

然而,这会产生错误: 花括号或点索引表达式应有一个输出,但有 3 个结果。

有没有人不用遍历整个结构就能做到这一点?

【问题讨论】:

    标签: matlab matlab-struct


    【解决方案1】:

    给你:

    ss=s(1).vector([1 26 45]);                     
    h=[ss.heading];            
    cell2mat({h.occurrences}')
    

    【讨论】:

    • 像魅力一样工作,非常感谢杰德! :) 如果我想对 s 做同样的事情,例如 s([1 2 3]).vector([1 26 45]),那将如何工作?我试过 xx=s([1 2 3]), yy=xx.vector([1 26 45]) 但这给了我同样的错误。这也可以通过向量操作实现吗?
    • @Jasper 请避免在评论中提出新问题。要么接受此答案并创建一个新问题,提及您之前的相关问题,要么编辑您的问题以包含回答问题所需的所有信息,但避免一次提出多个不同的问题。
    • 对不起,我是这个论坛的新手。我已经更新了我的问题
    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多