Remove a column from a matrix in GNU Octave

前端 未结 4 695
深忆病人
深忆病人 2021-02-02 05:45

In GNU Octave, I want to be able to remove specific columns from a matrix. In the interest of generality. I also want to be able to remove specific rows from a matrix.

4条回答
  •  野的像风
    2021-02-02 06:28

    GNU Octave delete Columns 2 and 4 from a Matrix

    mymatrix = eye(5); 
    mymatrix(:,[2,4]) = []; 
    disp(mymatrix)
    

    Prints:

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

    GNU Octave delete Rows 2 and 4 from a Matrix:

    mymatrix = eye(5); 
    mymatrix([2,4],:) = [];
    disp(mymatrix) 
    

    Prints:

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

    Time complexity

    GNU Octave's CPU complexity for slicing and broadcasting here is a fast linear time O(n * c) where n is number of rows and c a constant number of rows that remain. It's C level single-core vectorized but not parallel.

    Memory complexity

    Working memory complexity is linear: O(n * 2) C makes a clone of the two objects, iterates over every element, then deletes the original.

    The only time speed will be a problem is if your matrices are unrealistically wide, tall, or have a number of dimensions that blow out your fast memory, and speed is limited by the transfer speed between disk and memory.

提交回复
热议问题