MATLAB终端速度计算中,e的多项式次幂触发矩阵幂维度错误
MATLAB指数运算维度错误的解决方案
你的错误根源不是exp(1)或euler(1)被识别为矩阵,而是误用了矩阵幂运算符^。MATLAB中:
^是针对方阵的矩阵幂运算,要求操作数为方阵;.^是逐元素幂运算,用于对向量/矩阵的每个元素单独计算指数。
你的代码里time是linspace(0,10,1000)生成的1000元素向量,括号内的表达式2*sqrt(...)*time会得到同维度的向量。用e^向量时,MATLAB会尝试执行矩阵幂运算,自然触发维度不匹配错误。
修正后的代码
e = exp(1); % 用exp(1)即可,无需euler(1) app.MaxMassEditField.Value = 100; app.AreaEditField.Value = 1; app.DragCoefficientEditField.Value = 1; app.gEditField.Value = 1; app.MediumDensitryEditField.Value = 1; app.MassSlider.Limits = [10^(-7), app.MaxMassEditField.Value]; time = linspace(0, 10, 1000); % 提取重复计算的系数,简化代码结构 coeff = 2 * sqrt( (app.gEditField.Value * app.AreaEditField.Value * app.MediumDensitryEditField.Value * app.DragCoefficientEditField.Value) / (2 * app.MassSlider.Value) ); % 替换^为.^,执行逐元素指数运算;除法也用./保证逐元素计算 velocity = - (1 - e.^(coeff * time)) ./ (1 + e.^(coeff * time)); plot(app.UIAxes, time, velocity)
内容的提问来源于stack exchange,提问作者Lucky Doug
相关产品推荐
相关产品推荐

