я новичок в Android и DSP. я реализую алгоритм спектрального вычитания, спасибо
моя цель - использовать этот алгоритм в буфере потока телефонных звонков
Я пытаюсь понять, как реализовать этот код из реализации Matlab Spectral Subtraction, которую я использую.
Матальб код:
function Seg=segment(signal,W,SP,Window)
% SEGMENT chops a signal to overlapping windowed segments
% A= SEGMENT(X,W,SP,WIN) returns a matrix which its columns are segmented
% and windowed frames of the input one dimentional signal, X. W is the
% number of samples per window, default value W=256. SP is the shift
% percentage, default value SP=0.4. WIN is the window that is multiplied by
% each segment and its length should be W. the default window is hamming
% window.
% 06-Sep-04
% Esfandiar Zavarehei
if nargin<3
SP=.4;
end
if nargin<2
W=256;
end
if nargin<4
Window=hamming(W);
end
Window=Window(:); %make it a column vector
L=length(signal);
SP=fix(W.*SP);
N=fix((L-W)/SP +1); %number of segments
Index=(repmat(1:W,N,1)+repmat((0:(N-1))'*SP,1,W))';
hw=repmat(Window,1,N);
Seg=signal(Index).*hw;
мой вопрос заключается в том, должен ли я использовать JMathLib для реализации таких функций, как «repmat», которая является функцией матричной репликации, или я должен реализовать ее по-другому. помните, я работаю на смартфонах на базе Android. спасибо Гилад
W
сэмплов и применяет окно Хэмминга к каждому сегменту. Это несколько строк кода на C, Java или чем-то еще. - person Paul R   schedule 30.07.2012