File: setdiff.sci

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (17 lines) | stat: -rw-r--r-- 384 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function [a,ka]=setdiff(a,b)
//Copyrigth INRIA
// returns a values which are not in b
na=size(a,'*');

[lhs,rhs]=argn()
[a,ka]=unique(a);
b=unique(b(:));

[x,k]=sort([a(:);b]);
if type(a)==1 then x=x($:-1:1);k=k($:-1:1);,end
d=find(x(2:$)==x(1:$-1));  //index of common entries in sorted table
if d<>[] then k([d;d+1])=[],end

keep = find(k <= na); 
a = a(k(keep));
ka = ka(k(keep));