我在matlab中错误使用 vertcat 要串联的数组的维度不一致.主程序和函数程序如下图,本程序要实现功能是解一个三元二阶微分方程,图一主程序图二三是函数,恳请帮忙解答
1条回答 默认 最新
社区专家-Monster-XH 2023-10-31 16:58关注主程序:
clear; clc; close all; aa = 0:0.01:2; [t, y] = ode23(@MEqtion, aa, [0, 0, 0, 0, 0, 0]); subplot(3, 1, 1); plot(t, y(:, 1)); title('theta1 vs t'); grid minor; subplot(3, 1, 2); plot(t, y(:, 2)); title('theta2 vs t'); grid minor; subplot(3, 1, 3); plot(t, y(:, 3)); title('theta3 vs t'); grid minor;函数:
ffunction dy = MEqtion(t,y) % global parameters (if needed) dy = zeros(6,1); theta1 = y(1); dtheta1 = y(2); theta2 = y(3); dtheta2 = y(4); theta3 = y(5); dtheta3 = y(6); % Assuming parameters are given here r2 = 0.05644; r3 = 0.17355; I1 = 0.012431535; I2 = 0.015071; I3 = 1.228469; km = 6.8e8; cm = 46.996; i1 = 4; b = 2.5e-4; % 其他未定义的变量我这里为了使函数可以运行,先假设为1 T0 = 1; Tm = 1; TL = 1; % Calculation xx = r2 * theta2 - r3 * theta3; dxx = dtheta2 - dtheta3; if xx - b > 0 fx = xx - b; elseif xx + b < 0 fx = xx+b; else fx = 0; end F23 = km * fx + cm * dxx; T21 = T0 * sin(theta1 - i1 * theta2); % You need to define T0 dy1 = (Tm - T21/i1) / I1; % You need to define Tm dy2 = (T21 - r2 * F23) / I2; dy3 = (-TL + r3 * F23) / I3; % You need to define TL dy = [dtheta1; dy1; dtheta2; dy2; dtheta3; dy3]; end本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录