Почему свертка двух массивов в MATLAB приводит к значениям «NaN»? - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь вычислить свертку кривой с масштабированным вейвлетом. Используя функцию свертки MATLAB https://www.mathworks.com/help/matlab/ref/conv.html,, результат имеет большое количество значений NaN в начале, и я хотел бы понять, откуда они берутся.

Мой инстинкт сверткичто это не должно иметь место, поскольку я определил верхние границы в каждой точке свертки. Я визуализирую эту свертку так, что вейвлет переворачивается, а затем перемещается слева направо по кривой. По мере движения область ниже пересечения вейвлета с кривой является тем, что сохраняется в выходных данных. Если это так, результирующий вывод должен существовать и быть положительным во всех точках свертки, кроме случаев, когда нет перекрытия и результат равен 0.

% The curve is a set of responses to presented stimuli,
% and the following is an example:

curve = [0.0500, 0.1000, 0.1500, 0.2000, 0.3000, 0.5000, 0.8000;
 11.6465, 14.8354, 5.0695, 0.4856, 0.5858, 0.2863, 0.3864];

% The scaled Mexican hat wavelet is as follows:

acuteness = 1000;
[mexh_y, mexh_x] = mexihat(-5,5,acuteness);
max_response = max(curve(2,:));
wav_x = mexh_x/100;
wav_y = mexh_y * (max_response+1);

% Here wav_x are the wavelet’s x-values and wav_y are the wavelet’s y-values.

% I interpolate the original curve to have more values as follows:

max_presentation = max(curve(1,:));
step = max_presentation/acuteness;
sf_vals_for_interpolation = [step:step:max_presentation];
interp_curve = interp1(curve(1,:),curve(2,:),sf_vals_for_interpolation);

% Now I’d like to perform a convolution:

conv_res = conv(interp_curve, wav_y);

Как отмечено в сводке, результирующая сверткасодержит несколько значений 'NaN', которые я хотел бы понять.

...