Deleting Rows of a Matrix
2 views (last 30 days)
I have a 1D matrix or an array, I have attached files.
I have to delete its rows, such that starting from 4 till 6, then 10 to 12, then 16 till 18 and so on...
so basically leave three and then delete three.. leave 1 2 3 delete 4 5 6 then leave 7 8 9 delete 10 11 12... and going on till the last of matrix
I made this small program.
The problem I am having is in defining the variable X which tells how long will this loop run for until all the required rows are deleted.
[V,D] = eigs(Stiffness_Global,Mass_Global,1,'smallestabs')
for i =1:1:X
for j =a:1:(a+2)
a = a+4
Does anyone has an idea?
Can it be done without loops?
Image Analyst on 25 Jun 2020
Here's one way:
v = rand(1, 1512)' % Create sample data.
m = reshape(v, 3, ) % Make into matrix.
m(:, 2:2:end) = ; % Delete every other column.
v2 = m(:); % Turn into column vector.
More Answers (1)
Gaurav Aggarwal on 25 Jun 2020
Edited: Gaurav Aggarwal on 25 Jun 2020
It is possible. Could you check if this works for you?
X = %% your value
%% Starting value of the last chunk to be deleted, simple Arithmetic Progression
an = (4+(X-1)*6);
%% Find all the starting values for the 'to be deleted' chunks i.e. [4 10 16 ... an]
L = 4:6:an;
%% [L L+1 L+2] are all the indices which need to be removed
V([L L+1 L+2], :) = ;
Let me know if this helps you. Thanks.