numIterations = 100;
Fs = 44100;
L = 1024;
src1= audioDeviceReader;
sink1_1 = dsp.SpectrumAnalyzer('SampleRate',Fs, ...
'PlotAsTwoSidedSpectrum',false, ...
'SpectralMask',SpectralMaskSpecification, ...
'Position',[650,50,650,600],...
'ShowLegend',true,...
'Window','Hann',...
'WindowLength',L);
sink1_2 = dsp.TimeScope('SampleRate',Fs, ...
'TimeSpan',1, ...
'AxesScaling','Manual', ...
'BufferLength',Fs*2, ...
'ShowLegend',true, ...
'ShowGrid',true, ...
'Position',[0,50,650,600],...
'YLimits',[-0.1 0.1]);
clear dspStreamingPassthrough;
sink1_3 = dsp.AudioFileWriter('Filename','output1.wav');
sink1_4 = dsp.SpectrumEstimator('SampleRate',Fs,...
'SpectrumType','Power',...
'PowerUnits','dBm' ,...
'FrequencyRange','onesided',...
'OutputMaxHoldSpectrum',true,...
'OutputMinHoldSpectrum',true);
filename = 'spectrum.mat';
mfw = dsp.MatFileWriter(filename, 'VariableName', 'spectrum');
for i = 1:numIterations
in1 = src1();
out1 = dspStreamingPassthrough(in1);
sink1_1(out1);
sink1_2(out1);
sink1_3(out1);
[pxx,pmax,pmin] = sink1_4(out1);
mfw(pxx');
end
release(src1);
release(sink1_1);
release(sink1_2);
release(sink1_3);
release(sink1_4);
release(mfw);
load('spectrum');
f = Fs*(0:(L/2))/L;
t = (0:(size(spectrum)-1))/Fs;
[X,Y] = meshgrid(f,t);
figure, mesh(X,Y,spectrum);
ylabel('Time(s)'); xlabel('Frequency(Hz)'); zlabel('Power(dBm)');