麦克风阵列matlab,matlab关于麦克风阵列仿真的问题
% 定義一個均勻線性陣列
microphone = phased.OmnidirectionalMicrophoneElement('FrequencyRange',[20 20e3]);%
Nele = 10;??% 陣元數
ula = phased.ULA(Nele,0.05, 'Element',microphone); %定義一個ula
c = 340;
%模擬麥克風陣列輸入信號
%1,確定兩個信號和噪聲的位置,(方向角,仰角)
ang_dft = [-30; 0];
ang_cleanspeech = [-10; 10];
ang_laughter = [20; 0];
%2,在原點的麥克風陣元為參考點,使用寬帶接收器模擬陣列接收的3秒輸入信號
fs = 8000;
collector = phased.WidebandCollector('Sensor',ula,'PropagationSpeed',c,...
'SampleRate',fs,'ModulatedInput', false);
t_duration = 3;
t = 0:1/fs:t_duration-1/fs;
%3.生成一個白噪聲,功率確定的
prevS = rng(2008);
noisePwr = 1e-4;
% 預處理
NSampPerFrame = 1000;??% 每個陣元采樣的長度 1000個點
NTSample = t_duration*fs; % 陣列總共要取多少個點
sigArray = zeros(NTSample,Nele); % 最終輸出結果,初始值為零陣
voice_dft = zeros(NTSample,1); % 3秒鐘的dft原聲
voice_cleanspeech = zeros(NTSample,1); % 3秒鐘的clean_speech的原聲
voice_laugh = zeros(NTSample,1); % 3秒鐘的laugh的原聲
%創建音頻設備
audioWriter = audioDeviceWriter('SampleRate',fs, ...
'SupportVariableSizeInput', true);
isAudioSupported = (length(getAudioDevices(audioWriter))>1);
% 按流的方式讀取數據,以下類似 同時這三個文件Phased工具包自帶
dftFileReader = dsp.AudioFileReader('dft_voice_8kHz.wav',...
'SamplesPerFrame',NSampPerFrame);
speechFileReader = dsp.AudioFileReader('cleanspeech_voice_8kHz.wav',...
'SamplesPerFrame',NSampPerFrame);
laughterFileReader = dsp.AudioFileReader('laughter_8kHz.wav',...
'SamplesPerFrame',NSampPerFrame);
% 仿真
for m = 1:NSampPerFrame:NTSample
sig_idx = m:m+NSampPerFrame-1;
x1 = dftFileReader();
x2 = speechFileReader();
x3 = 2*laughterFileReader();
temp = collector([x1 x2 x3],...
[ang_dft ang_cleanspeech ang_laughter]) + ...
sqrt(noisePwr)*randn(NSampPerFrame,Nele);
if isAudioSupported
play(audioWriter,0.5*temp(:,3));
end
sigArray(sig_idx,:) = temp;
voice_dft(sig_idx) = x1;
voice_cleanspeech(sig_idx) = x2;
voice_laugh(sig_idx) = x3;
end
%畫圖
plot(t,sigArray(:,3));
xlabel('Time (sec)'); ylabel ('Amplitude (V)');
title('Signal Received at Channel 3'); ylim([-3 3]);
[\code]
這段代碼是matlab官網上的一段示范代碼,但我復制到MATLAB上無法運行,我用的版本是2014a,win7系統
出現的問題:
1.創建音頻設備下的這段代碼運行時出現錯誤:未定義與 'char' 類型的輸入參數相對應的函數 'audioDeviceWrite。
2.如果刪除上面這段錯誤代碼,出現錯誤在x1 = dftFileReader();這個地方,錯誤:不允許使用類 'dsp.AudioFileReader' 的對象組成數組和括號樣式的編制索引功能。只能將類 'dsp.AudioFileReader' 的對象用作標量,或者用作元胞數組。我覺得那個1中錯誤代碼只是去調用電腦的聲卡,刪除后對整體無影響。
3.for內的temp參數是干什么的,不太清楚含義是什么,為什么設置這樣的一個量
煩勞各位了,謝謝!
總結
以上是生活随笔為你收集整理的麦克风阵列matlab,matlab关于麦克风阵列仿真的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于时延法的麦克风阵列声源定位分析
- 下一篇: 【图像分割】基于脉冲耦合神经网络实现图像