【问题标题】:Repmat in Matlab to replicate specific elementsMatlab中的Repmat复制特定元素
【发布时间】:2021-05-04 12:57:53
【问题描述】:

我有以下代码行,我在cell array 中找到了一个名为Events 的事件"41"(下面包含此数组的最小示例),并且代码行允许我添加标记为@987654324 的8 个事件@ 在"41" 之后,这是在out1 中输出(也显示了结果)。我的问题是我需要在"41" 之前包含"411"5 条目,但我不知道该怎么做。

我怎样才能修改下面的行以便能够轻松地做到这一点?

out1 = arrayfun( @(x,b) [x; repmat({'411'}, 8*b, 1)], Events, strcmp('41',Events), 'uni', 0 );
out1 = vertcat(out1{:});
Events = ['9991'    '9991'  '9991'  '9991'  '9991'  '9991'  '9992'  '10'    '11'    '41'    '42'    '10'    '11'    '43'    '44'];

out1 = ['9991'  '9991'  '9991'  '9991'  '9991'  '9991'  '9992'  '10'    '11'    '41' '411' '411'  '411' '411' '411' '411' '411' '411'   '42'    '10'    '11'    '43'    '44'];

Thanks!

【问题讨论】:

    标签: arrays matlab matrix find cell-array


    【解决方案1】:

    为了提供帮助,您能否更具体地定义问题?数组“事件”是否总是一维的?您认为“41”只会出现一次还是多次出现?

    我现在无法测试它,但我想应该这样做:

    out1 = arrayfun(@(x,b) [repmat({'411'}, 5*b, 1), x], 事件, strcmp('41',Events), 'uni', 0 ); out1 = vertcat(out1{:});

    如果您仍然遇到问题,请告诉我,今晚我可以更深入地了解一下

    【讨论】:

    • 41 会出现多次(这里它只出现一次,因为我给出了一个最小的例子)。是的,它将是一个单一的维度。本质上,我想在 41 之前添加 5 个“411”,就像我在它之后添加 8 个“411”一样......
    • 超级。很高兴听到它有帮助!
    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多