Hi Noor,
I understand that you want to retrieve the original signal from the data, which is interference with the signal with the same statistics as that from the training period, to implement a beamformer.
You can make use of the minimum variance distortion-less response (MVDR) beamformer or the linearly constrained minimum variance (LCMV) beamformer. The functions for the same are “phased.MVDRbeamformer” and “phased.LCMVBeamformer”. Refer the pseudo code below for better understanding:
trainingData = data(1:1000, :); % Extract the first 1000 data points for training
recordedData = data(1001:2000, :); % Extract the last 1000 data points for recorded signals
beamformer = phased.MVDRBeamformer('SensorArray',trainingData); % Pass the training data through the function. You can change the parameters as per the requirements.
[y,w] = beamformer(recordedData); % Pass the recorded data through the beamformer weights.
For more information on the “phased.MVDRbeamformer” and “phased.LCMVBeamformer” functions, you can refer the documentation below:
- “phased.MVDRbeamformer” : https://www.mathworks.com/help/phased/ref/phased.mvdrbeamformer-system-object.html
- “phased.LCMVBeamformer” : https://www.mathworks.com/help/phased/ref/phased.lcmvbeamformer-system-object.html
Regards,
Ayush