Реализуйте голосовой импульс в речевом сигнале, используя Matlab

Я получил код для голосового пульса, и когда я попытался запустить его, инициализировав параметры, я получил один импульс. Но когда я пытаюсь реализовать это на сигнале, я не могу получить результат. Я получаю ошибку как:

Несоответствие параметров задания по подписке

fs= 11025;
f0= 190;
N1=12;
N2=17;
T=1/f0;     %period in seconds
pulselength=floor(T*fs);    %length of one period of pulse
%select N1 and N2 for duty cycle
N2=floor(pulselength*N2);
N1=floor(N1*N2);
gn=zeros(1,N2);
%calculate pulse samples
for n=1:N1-1
    gn(n)=0.5*(1-cos(pi*(n-1)/N1));
end
for n=N1:N2
    gn(n)=cos(pi*(n-N1)/(N2-N1)/2);
end
gn=[gn zeros(1,(pulselength-N2))];
plot(gn);

Пожалуйста, просмотрите код и помогите мне, где я ошибаюсь.


person Matlab_Begineer    schedule 09.04.2014    source источник
comment
Сделайте свою собственную отладку! Как минимум, запускайте свой код построчно, выясняйте, где возникает ошибка. (Кстати, в том, что вы опубликовали, нет ничего плохого, кроме обязательных комментариев о векторизации).   -  person nkjt    schedule 09.04.2014
comment
Спасибо за ваше предложение, чувак.   -  person Matlab_Begineer    schedule 09.04.2014


Ответы (1)


Я предполагаю, что ваш фрагмент исходит из http://www.mattmontag.com/projects/speech/rosenberg.m. Установите N1 и N2 на значения от 0 до 1.

Из справки к rosenberg.m:

N2 is duty cycle of the pulse, from 0 to 1.
N1 is the duration of the glottal opening as a fraction of the total pulse, from 0 to 1.

Импульс Розенберга с разными значениями для N1 и N2

person kalleknast    schedule 13.11.2016