Skip to content

Elements of set theory

This part will cover

  • Unique
  • Union
  • Set difference
  • Intersection

You are a system administrator aboard the corporate OC-3. You are currently deploying a database change affecting 4423 customers at a speed of 155.52Mbit/s.

In brief intervals of time spent waiting between helping your sales staff with Excel, you enjoy maintaining a forum dedicated to signal processing. Unfortunately for you, you had a lapse of judgement and your forum's been completely spammed. Unfortunately for management, you’ve decided to use company time to fix this issue.

      POSTS
┌──────────┬─────┬────────────────────────────────────────────────────────────────────┬────────────────┐
30-08-202418:52Why does DVB-C use QAM instead of OFDM?                             frequencySniffer
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202410:34DAC in QPSK modulation                                              radioComputer   
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202402:30Weve Received Your Payment                                         fccvrybkas      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202402:16Order number 1045534719 / Nice savings with this offer...           cherylebowmiq   
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202402:03TREND ALERT: Discover one of a kind items                           k.a6            
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202400:12WARNING! This is not a joke! Carry on reading or you will be cursed!mark0847        
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202423:28I know your password T.J Eckleburg                                  johnsmith       
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202423:17Whats with all the spam??                                           fluxLinker      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202422:36HACKED BY APT1 // FIX YOUR SITE                                     YouKnowWho      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202421:38Nordtel OC3 Express                                                 corporateRaider 
└──────────┴─────┴────────────────────────────────────────────────────────────────────┴────────────────┘

Not this again, you need to get rid of all the spam before the situation gets out of hand. You first remove all duplicate posts using the monadic unique function.

       POSTS
┌──────────┬─────┬────────────────────────────────────────────────────────────────────┬────────────────┐
30-08-202418:52Why does DVB-C use QAM instead of OFDM?                             frequencySniffer
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202410:34DAC in QPSK modulation                                              radioComputer   
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202402:30Weve Received Your Payment                                         fccvrybkas      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202402:16Order number 1045534719 / Nice savings with this offer...           cherylebowmiq   
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202402:03TREND ALERT: Discover one of a kind items                           k.a6            
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
30-08-202400:12WARNING! This is not a joke! Carry on reading or you will be cursed!mark0847        
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202423:28I know your password T.J Eckleburg                                  johnsmith       
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202423:17Whats with all the spam??                                           fluxLinker      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202422:36HACKED BY APT1 // FIX YOUR SITE                                     YouKnowWho      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
01-01-197000:00XXXXXXXXXX                                                          XXXXXXXXXX      
├──────────┼─────┼────────────────────────────────────────────────────────────────────┼────────────────┤
29-08-202421:38Nordtel OC3 Express                                                 corporateRaider 
└──────────┴─────┴────────────────────────────────────────────────────────────────────┴────────────────┘

The duplicate XXXXXXXXXX spam posts have been removed. Next is removing specific posts using the set difference ~ function. First, listing all the indices of the post then removing the specific spam posts.

       POSTS
11 4
      11
1 2 3 4 5 6 7 8 9 10 11
      (11) ~ 3 4 5 6 7 8 9 10
1 2 11
      POSTS  POSTS[(13) ~ 3 4 5 6 7 8 9 10]
      POSTS
┌──────────┬─────┬───────────────────────────────────────┬────────────────┐
30-08-202418:52Why does DVB-C use QAM instead of OFDM?frequencySniffer
├──────────┼─────┼───────────────────────────────────────┼────────────────┤
30-08-202410:34DAC in QPSK modulation                 radioComputer   
├──────────┼─────┼───────────────────────────────────────┼────────────────┤
29-08-202421:38Nordtel OC3 Express                    corporateRaider 
└──────────┴─────┴───────────────────────────────────────┴────────────────┘

That's better! Let's take a closer look at some other set functions, too.

Take the following vectors of emoticons

HAPPY_EMOTICONS  ':)' ':-)' ':D' ':]' ':o)' '8)' ':3' 'c:' ':x'

SAD_EMOTICONS  '):' ':c' ']:' ')-:' 'D:' '>:(' ':/' ':x' ':|'

The symbol acts dyadically as Set Union.

       HAPPY_EMOTICONS  SAD_EMOTICONS
:) :-) :D :] :o) 8) :3 c: :x ): :c ]: )-: D: >:( :/ :|

Notice how the element :x only appears once, where it would appear twice if we were to use the dyadic catenate , operator introduced in Chapter 2.

       HAPPY_EMOTICONS , SAD_EMOTICONS
:) :-) :D :] :o) 8) :3 c: :x ): :c ]: )-: D: :x >:( :/ :|

Similarly, the symbol acts dyadically as the Set Intersection operation.

       HAPPY_EMOTICONS  SAD_EMOTICONS
:x

The symbol ~, which monadically refers to boolean NOT, is dyadically the Set Difference operation.

       HAPPY_EMOTICONS ~ SAD_EMOTICONS
:) :-) :D :] :o) 8) :3 c:
       ⍝ Notice the ':x' emoticon is gone

Monadically, the symbol acts as the Unique operator, removing duplicate entries in a vector.

        HAPPY_EMOTICONS , SAD_EMOTICONS
:) :-) :D :] :o) 8) :3 c: :x ): :c ]: )-: D: >:( :/ :|
       ⍝ Notice the ':x' emoticon only appears once