【问题标题】:Create a matrix according to a binary matrix根据二进制矩阵创建矩阵
【发布时间】:2014-10-18 18:01:33
【问题描述】:

我来了

A = [1, 2, 3]

B = [1, 0, 0, 1, 0, 1]

我想创建一个矩阵

C = [1, 0, 0, 2, 0, 3]

可以看到B 就像一个掩码,B 的个数等于A 的元素个数。我想要的是将A 中的元素排列到B1 的地方。

任何没有循环的方法?

【问题讨论】:

    标签: matlab octave


    【解决方案1】:

    未经测试,但应该接近:

    C = zeros(size(B));
    C(logical(B)) = A;
    

    这依赖于logical indexing

    【讨论】:

    • 只是想发布相同的解决方案,使用C(find(B)) = A;,但结果相同。
    • @Nemesis logical 可能比find
    • @Divakar 在 Octave 中的快速测试表明 == 1logical() 稍快。但是,它们有不同的结果。更公平的比较是与 != 0 相比,后者仍然更快。
    • @carandraug 因为B = [1, 0, 0, 1, 0, 1],所以B==1 让我印象深刻,但对于一般情况,您对~=0 的看法是正确的。我能够对这些逻辑阵列问题执行一些相关测试,并且我认为也可以确认您的快速测试。这些张贴在这里 - stackoverflow.com/questions/25339215/…
    猜你喜欢
    • 2014-04-08
    • 2013-06-30
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2022-01-23
    相关资源
    最近更新 更多