我正在编写一个脚本来计算汽车的 Ackerman steering geometry 。
输入: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);
答案 0 :(得分:0)
在主文件中使用
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
测试W和Tp的值为1。
您的代码中有两个问题。
第一个是您要创建一个具有特定间距的向量,应该使用T = start:spacing:end来完成。
第二个问题是您在find_a函数中使用mrdivide“ /”而不是除以“ ./”。有关说明,请参见Matlab文档。