【问题标题】:MATLAB: loop-less conversion of vector to logical matrixMATLAB:向量到逻辑矩阵的无循环转换
【发布时间】:2013-10-30 10:08:45
【问题描述】:

我想将整数向量转换为逻辑矩阵。这就是我想要的方式。假设向量的大小为 M,最大元素为 A。输出应该是大小为 MxA 的逻辑矩阵,其中值为 v_i 的每一行从第 1 列到 (v_i - 1) 为 0,从列中为 1 v_i 到 A。这是一个例子:

3
4
4
1

输出应该是:

0 0 1 1
0 0 0 1
1 1 1 1
1 1 1 1

我可以通过循环很容易地做到这一点,但是在 MATLAB 中是否有一种无循环的方式来做到这一点?

【问题讨论】:

    标签: matlab matrix vector


    【解决方案1】:

    简单。首先定义你的数据:

    vector = [3; 4; 4; 1];
    M = length(vector);
    A = 4;
    

    然后(使用bsxfun):

    output = bsxfun(@ge, 1:A, vector(:));
    

    或者(使用repmat):

    output = repmat(1:A,M,1) >= repmat(vector(:),1,A);
    

    【讨论】:

    • 哦,太好了,我真的没有简单地考虑它 :)
    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    相关资源
    最近更新 更多