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.
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.