If you haven’t already, be sure to check out my prior pages, where I condition the signals referenced here in MATLAB here. If you are not familiar with DSP, then I offer this reference.

MATLAB is a powerful mathematical analysis tool, and I plan to use it to evaluate and examine recorded EEG signals to determine the impact that cellular and other man-made signals have on the brain. Although this has already been determined through other legit scientific studies recently released (another) I wish to perform my own study as an introductory for me into this science.

The basics of signal analysis

I have started learning about Digital Signal Analysis, and have created a small tutorial that proves my method of extracting the frequencies found within a signal functions as expected. In my example, I will create a 1Hz sinewave with an amplitude of 1, phase of 0 degrees, and based on a 250Hz sampling, and then I will use the FFT function to extract the frequencies found within. Using the MATLAB script below, in a new script and clean workspace, I created a sine wave consisting of a 1Hz and 5Hz signal:

We will plot a single-sided amplitude spectrum of the generated sine wave:

Now we will determine the frequencies that make up the signal using the following code below:

As can be seen above two results are found: 1Hz with amplitude 2, and 5Hz with amplitude of 3. If noise is a problem, then it can be filtered out by adjusting the BFloor constant to a higher number.

Signal Analysis

I wanted to compare the frequency components between P8 and T8. I loaded back in my workspace, and ran the below code. As can be seen there were some similarities between them.

I wanted to see what frequencies can be found within C3. I plotted the result using the code below. As can be seen, there were a lot of them – MATLAB counted 140 of them. Note that adjusting the floor changes the number of signals found.

My goal is to work towards gaining an understanding of which frequencies are common to the various areas of the brain and determining their phase (to see if they are synchronized). I decided to compare the signals found during my EEG recording between C3 and C4. The following code will generate two variables, each containing a list of the frequencies found in each of the signals, rounded to one decimal place.

It is interesting that many frequencies were duplicated. So I expanded the investigation to include all of the unique frequencies found in each of the signals, and decided to sort them so it would be easier to compare them. I wrote a MATLAB script to create the necessary variables – the program was broke into 4 blocks below (for space). I’ll improve the script later.

This creates variables for each EEG placement that contains each of the unique frequencies that were found in the signal. I scanned through them and found that across them, only a few EEG placements recorded frequencies higher than 31.3 Hz – those were F3, Fp2, O1, P3, P8, T7, and T8, which contained the following frequencies: 37.6, 44.9, 45.4, 70.4, 74.8, 79.4, 113.8 Hz.

I wanted to source these frequencies in the signal and see the their amplitudes – determine where the were localized. In the segment of code above where we create the variables that hold the Filtered_Frequencies, I modified the above code as follows:

if x == 1
C3_Filtered_Frequencies = round(variable,1);
C3_Filtered_Amplitude = amplitude_variable;
elseif x == 2
C4_Filtered_Frequencies = round(variable,1);
C4_Filtered_Amplitude = amplitude_variable;
elseif x == 3
F3_Filtered_Frequencies = round(variable,1);
F3_Filtered_Amplitude = amplitude_variable;
elseif x == 4
F4_Filtered_Frequencies = round(variable,1);
F4_Filtered_Amplitude = amplitude_variable;
elseif x == 5
F7_Filtered_Frequencies = round(variable,1);
F7_Filtered_Amplitude = amplitude_variable;
elseif x == 6
F8_Filtered_Frequencies = round(variable,1);
F8_Filtered_Amplitude = amplitude_variable;
elseif x == 7
Fp1_Filtered_Frequencies = round(variable,1);
Fp1_Filtered_Amplitude = amplitude_variable;
elseif x == 8
Fp2_Filtered_Frequencies = round(variable,1);
Fp2_Filtered_Amplitude = amplitude_variable;
elseif x == 9
O1_Filtered_Frequencies = round(variable,1);
O1_Filtered_Amplitude = amplitude_variable;
elseif x == 10
O2_Filtered_Frequencies = round(variable,1);
O2_Filtered_Amplitude = amplitude_variable;
elseif x == 11
P3_Filtered_Frequencies = round(variable,1);
P3_Filtered_Amplitude = amplitude_variable;
elseif x == 12
P4_Filtered_Frequencies = round(variable,1);
P4_Filtered_Amplitude = amplitude_variable;
elseif x == 13
P7_Filtered_Frequencies = round(variable,1);
P7_Filtered_Amplitude = amplitude_variable;
elseif x == 14
P8_Filtered_Frequencies = round(variable,1);
P8_Filtered_Amplitude = amplitude_variable;
elseif x == 15
T7_Filtered_Frequencies = round(variable,1);
T7_Filtered_Amplitude = amplitude_variable;
elseif x == 16
T8_Filtered_Frequencies = round(variable,1);
T8_Filtered_Amplitude = amplitude_variable;
end
end

After running the script you’ll find the frequencies found in each of the EEG placements (_Filtered_Frequencies), and their amplitudes (_Filtered_Amplitude).

I wanted to find where these frequencies found inside each of the EEG placements. I ran the code below against each of the EEG placements that had the unique frequencies in them.

A few people have asked me to post any EEG recordings that I have. So, I feel obligated to comply – here is a list! Apparently, you are now able to extract silent speech from EEG readings – I wonder if anyone can extract mine?