Расчет кривизны с усредненными многоугольными точками Matlab - PullRequest
0 голосов
/ 14 января 2020

Я использую Matlab и Psychtoolbox для создания стимулов.

Я хочу вычислить кривизну многоугольной цепочки, состоящей из 300 координат X и Y.

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

Итак, я думаю об обходе как об усреднении 10 координат и использовании усредненных координат для вычисления кривизны. Я полагаю, что для этого усреднения я должен использовать для l oop, но не знаю точно, как реализовать для l oop.

Был бы рад, если бы кто-то помог мне с этой проблемой. А для уточнения c информации я поделюсь своим кодом.

%template for generating random curvilinear line

Nframes = 300;
Dirtemp = 360 * sin(linspace(0,2*pi,Nframes*2));
speed = 5;
trials = 10


for i = 1:trials
    randst = ceil(rand*Nframes);
    randstart(1,i) = randst;
end

for j = 1:trials
    randd = randstart(1,j);
    Dirr = Dirtemp(randd:(randd + Nframes -1));
    Dir(j,:) = Dirr;
end

%Obtaining coordinates

for k = 1:trials

    X(k,:) = speed .* cosd(Dir(k,:));
    X(k,:) = round(cumsum(X(k,:)));
    Y(k,:) = speed .* sind(Dir(k,:));
    Y(k,:) = round(cumsum(Y(k,:)));

end

Это код, который я написал для генерации координат. И я буду использовать этот код для вычисления кривизны

%First derivates
dsx = diff(x);
dsy = diff(y);
ds = sqrt(dsx.^2+dsy.^2);
Tx = dsx./ds;
Ty = dsy./ds;

% Second derivative & curvature
ds2 = 0.5*(ds([end,1:end-1])+ds);
Hx = diff(Tx([end,1:end]))./ds2;
Hy = diff(Ty([end,1:end]))./ds2;

И из-за отсутствия опыта программирования мой код может показаться неуклюжим для глаз экспертов. Поэтому было бы полезно, если бы вы указали на некоторую избыточность.

Чтобы дать читателям четкое понимание, я приложил цифры из Matlab

введите описание изображения здесь

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...