首页 > 解决方案 > 当一个使用另一个向量时,有没有办法使两个向量的长度相同?

问题描述

我正在编写一个脚本来计算汽车的阿克曼转向几何

输入: 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

我希望我会得到一个avs图表,T但我收到了错误:

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

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

标签: matlabvectorplot

解决方案


在您的主文件中使用

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 来完成。

第二个问题是您在 find_a 函数中使用 mrdivide“/”而不是除“./”。有关说明,请参阅 Matlab 文档。


推荐阅读