What is the inverse of find() function in matlab

后端 未结 2 431
长情又很酷
长情又很酷 2021-01-20 02:37

In Matlab I can find all non zero entries in a vector like this:

>> v = [0 1 0 0 1]

v =

     0     1     0     0     1

>> indices = find(v)

i         


        
2条回答
  •  逝去的感伤
    2021-01-20 03:26

    you have to know what the shape v is (i.e. how long v is if it's a vector as in your example), but once you know that it's trivial:

    n = 5;
    v_reconstructed = zeros(1, n);
    v_reconstructed(indices) = 1;
    

    if you don't know how long v is then you won't capture any 0s after the last 1 in v...

    BTW if you are working with sparse matrices then you might want this actually:

    v = sparse([0 1 0 0 1]);
    v_reconstructed = full(v);
    

提交回复
热议问题