Как установить значения оси X после свертки двух функций? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь свернуть две функции. Одна из функций из экспериментальных данных. Для второй функции я должен создать пошаговую функцию и повернуть ее под углом. Мой код работает хорошо для шага под углом 0 и -10 градусов, но для любого другого угла результат выглядит смещенным. Может ли кто-нибудь указать мне, где я иду не так?

Чтобы понять проблему, связанную со сверткой, я просмотрел следующие ссылки:

Основные вопросы о функции извлечения

Понимание свертки, «то же самое» может дать неверный результат

enter image description here enter image description here

clc;
clear all;
% close all;

lsf=[0 0 0 0 0 0 0 0 0.0001 0.0002 0.0004 0.0008 0.0018 0.0038 0.008 0.0167 0.0339 0.065 0.1124 0.1638 0.1874 0.1634 0.112 0.0647 0.0337 0.0166 0.008 0.0038 0.0018 0.0008 0.0004 0.0002 0.0001 0 0 0 0 0 0 0 0];
dx=7.4880 :(0.16/5):8.928;
[pk,loc] = findpeaks(lsf,'MinPeakHeight',0.18);

%% Creating a Perfect Step
x=-8.2:(0.16/5):8.2;
y=zeros(size(x));
y(loc+1:end)=1;

%% Rotate the Step
v = [x;y];
x_center = x(loc);
y_center = y(loc);
center = repmat([x_center; y_center], 1, length(x));
theta =-15;       
R = [cosd(theta) -sind(theta); sind(theta) cosd(theta)];
vo = R*(v - center) + center 
x_rotated = vo(1,:);
y_rotated = vo(2,:);

%% Perform Convolution
C_step=conv(y_rotated,lsf);
X_conv =(x_rotated(1)-x_rotated(end))+(diff(dx(1:2)))*(0:(length(C_step)-1));   
...