matlab - 当一个使用另一个向量时,有没有办法使两个向量的长度相同?
问题描述
我正在编写一个脚本来计算汽车的阿克曼转向几何。
输入: 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
vs图表,T
但我收到了错误:
使用绘图
向量的错误必须是相同的长度。Solar_Car_Wheel_Calc(第 39 行)
绘图中的错误(find_a(W,R0,T,Tp),T,'LineStyle','-','Color','k','LineWidth',2.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
用值 1 测试 W 和 Tp。
您的代码中有两个问题。
第一个是你试图创建一个具有特定间距的向量,这应该使用 T= start:spacing:end 来完成。
第二个问题是您在 find_a 函数中使用 mrdivide“/”而不是除“./”。有关说明,请参阅 Matlab 文档。
推荐阅读
- c# - 如何通过单击按钮运行 .exe 文件?
- docker - 如何在docker中启动后立即使用容器退出?
- python - 使用 Python 诅咒在终端中显示彩色 ascii 艺术
- ruby-on-rails - AbstractController::DoubleRenderError(在此操作中多次调用渲染和/或重定向,而不是重复
- node.js - 为什么 Clarifai 无法使用 Clarifai 门户中生成的 API 密钥或个人访问令牌验证模型输出请求?
- arrays - 无法使用 strtok() 访问地址处的内存
- python - cvlib 对象检测空列表
- mysql - 如何自然排序“XY”字符串数据,首先按X,然后按Y?
- javascript - 如何使用 Jest 模拟 optimizelySDK.createInstance().onReady()?
- python - Python 包命名空间:common test/docs/setup.py 或每个命名空间一个 - 哪种模式更好?