Patent Document ID: 9031816
Application ID: 13149323
Patent Flag: 1

Claim One:
1. An independent component analysis processor for performing an independent component analysis process on multiple-channel parallel signals having raw data, comprising: the independent component analysis processor being operably connected to an Electroencephalography (EEG) machine, and configured to process data from a plurality of sensors of the Electroencephalography (EEG) machine; an input buffering unit that receives and stores the multiple-channel parallel signals and outputs the raw data; a mean/covariance unit that calculates a mean and a covariance of the raw data; a centering unit that centers the raw data according to the mean of the raw data, to obtain zero-mean data; a whitening unit that receives and performs a whitening process on the covariance of the raw data and the zero-mean data, to obtain a whitening matrix and an uncorrelated data stream; an independent component analysis (ICA) training unit that receives the uncorrelated data stream from the whitening unit and calculates an unmixing weight matrix; and an ICA calculating unit that receives the unmixing weight matrix and the whitening matrix, calculates a whitening unmixing matrix, and calculates independent components of the multiple-channel parallel signals according to the whitening unmixing matrix and the raw data, wherein the input buffering unit comprises an interleaving memory having at least three cyclic memory banks for sequentially storing the raw data in the multiple-channel parallel signals, the input buffering unit employs the interleaving memory that comprises the at least three cyclic memory banks to realize a sliding window, and the sliding window is used to sequentially select two of the at least three cyclic memory banks as working windows, wherein the raw data received by the input buffering unit is stored in a first memory bank, a second memory bank, and a third memory bank sequentially, the raw data stored in the first and second memory banks being output sequentially when the third memory bank starts to store the raw data, and the raw data being cyclically returned to be stored in the first memory bank when the third memory bank is full of the raw data, wherein the ICA training unit calculates the unmixing weight matrix with an iteration method, and, if a difference between unmixing weight matrixes W(n) and W(n+l) that are calculated by former and latter iterations in a kth window, respectively, is less than a predetermined value, the ICA training unit stores the unmixing weight matrix W(n+l) in a register and outputs the unmixing weight matrix W(n+l) to the ICA calculating unit, or a notification is issued to the input buffering unit to enable the input buffering unit to send raw data in the kth window for recalculation, wherein the input buffering unit, before transmitting raw data in kth window to the ICA calculating unit, issues a notification to the ICA training unit to enable the ICA training unit to transmit an unmixing weight matrix W(k) to the ICA calculating unit, wherein the input buffering unit's sequentially storing of the raw data, the centering unit's centering, the whitening unit's whitening process, and the ICA training unit's calculation are performed sequentially, and the ICA training unit's and the ICA calculating unit's calculations are performed in parallel, wherein the mean/covariance unit calculates the mean and the covariance of the raw data and the whitening unit performs the whitening process only one time in the kth window, wherein a sliding window size, a memory bank size, and a correlation between the raw data and the independent components of the multiple-channel parallel signals are related to one another, such that the sliding window size is evaluated according to the memory bank size and the correlation, and wherein the whitening unit comprises a plurality of CORDIC units that operate in parallel.