Есть ли способ сделать два вектора одинаковой длины, когда один использует другой? - PullRequest
0 голосов
/ 09 апреля 2019

Я пишу скрипт для расчета геометрии рулевого управления Акермана автомобиля.

Ввод: T - линейный набор чисел

Вывод: a использует T для вычисления некоторых чисел , которые я могу построить .

В моем выводе есть несколько других функций, которые также содержат T в качестве ввода.

Как мне сделать , чтобы мой конечный результат был того же размера , что и мой ввод?

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

fprintf("\nGraph 1");
W = input("\nEnter your W: ");
T = linspace(0.5, 2.2, .01);
Tp = input("Enter your Tp: ");
R0 = 6.1 - T/2;

figure(1);
plot(find_a(W, R0, T, Tp), T, 'LineStyle', '-', 'Color', 'k', 'LineWidth', 2.0);
title('Plot of a vs T with R0');
xlabel('T');
ylabel('a');
grid on;
function x = find_a(W, R, T, Tp)
    % Description: Finds linkage length
    s_i = sin(phi_o(W, Tp) + delta_i(W, R, T));
    x = (delta_i(W, R, T) * phi_o(W, Tp))/ tan(s_i);
end
function x = phi_o(W, Tp)
    % Description: Calculates steering knuckles extension angles
    x = atan((Tp/2)/W);
end
function x = delta_i(W, R, T)
    % Description: Calculates inner turning angle
    x = atan(W./(R - T/2));
end

Я ожидаю, что получу график a против T, но вместо этого получу ошибку:

Ошибка при использовании графика
Векторы должны быть одинаковой длины.

Ошибка в Solar_Car_Wheel_Calc (строка 39)
plot (find_a (W, R0, T, Tp), T, 'LineStyle', '-', 'Color', 'k', 'LineWidth', 2.0);

1 Ответ

0 голосов
/ 09 апреля 2019

В вашем основном файле используйте

T = 0.5:0.01:2.2;

и в вашей функции find_a

function x = find_a(W, R, T, Tp)
% Description: Finds linkage length
s_i = sin(phi_o(W, Tp) + delta_i(W, R, T));
x = (delta_i(W, R, T) .* phi_o(W, Tp))./ tan(s_i);
end

Протестировано со значением 1 для W и Tp.

В вашем коде есть две проблемы.

Первая - вы пытаетесь создать вектор с определенным интервалом, что следует сделать с помощью T = start: spacing: end.

Вторая проблема заключается в том, что вы используете mrdivide "/" в функции find_a вместо "./".См. Документы Matlab для уточнения.

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