MATLAB: deleting rows

  • MATLAB
  • Thread starter hoffmann
  • Start date
  • #1
70
0
hi all,

i have a list of numbers as follows (list1):

22
26
51
4
740
...

and a two column list of numbers as follows (list2):

1 13
4 9
22 26
33 740
55 1234

the task i want to accomplish is as follows:
if a number from list1 is found in a row in list2, i would like to remove that row from list2. in the above example the numbers 22, 26, 4, and 740 are found in both columns of list2 and i would like to remove rows 2, 3, and 4 of list2. how would i do this in a short matlab script?

thanks!

i also have the following code from a prior implementation, but this only works for 2 column arrays. any help would be much appreciated!

kill=[];
for i=1:length(list1)
if list1(i,1) == list2(i,2)
kill = [kill i];
end
end
 

Answers and Replies

  • #2
mheslep
Gold Member
317
728
I'm of no help to you on Matlab but I thought I'd show a Python alternative on the chance that you will have the option to use in the future. Python plus its plugin packages numpy and scipy are increasing used for scientific computing and they're free.

The third line here is called a http://www.python.org/dev/peps/pep-0202/" [Broken] in python
Code:
l1=[22, 26, 51, 4, 740]
l2=[[1, 13], [4, 9], [22, 26], [33, 740], [55, 1234]]
[row for row in l2 if row[0] not in l1 and row[1] not in l1]

[B][[1, 13], [55, 1234]] [/B]

or one can break out the list in to more familia for - if - repeat iterations on separate lines. In either case the python run time machine has to iterate over the list (as does Matlab IIR). Numpy/Scipy provide array/vector methods in which the iteration is done in compiled C code and is thus much faster.
http://www.scipy.org/SciPy [Broken]
 
Last edited by a moderator:

Related Threads on MATLAB: deleting rows

  • Last Post
Replies
10
Views
82K
Replies
6
Views
7K
Replies
0
Views
7K
Replies
1
Views
5K
Replies
0
Views
3K
  • Last Post
Replies
1
Views
2K
Top