当一个向量使用另一个向量时,有没有办法使两个向量具有相同的长度?

时间:2019-04-09 00:41:01

标签: matlab vector plot

我正在编写一个脚本来计算汽车的 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

我希望我能得到aT的图表,但我收到错误消息:

  

使用图错误
  向量的长度必须相同。

     

Solar_Car_Wheel_Calc中的错误(第39行)
      plot(find_a(W,R0,T,Tp),T,'LineStyle','-','Color','k','LineWidth',2.0);

1 个答案:

答案 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文档。