You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab矩阵乘法维度不匹配报错:线性回归预测问题求助

矩阵乘法维度不匹配问题排查与解决方案

问题根源

错误发生在 r=(pn')*(best); 行,核心原因是矩阵维度不匹配:

  • best 是梯度下降输出的参数向量,维度为 2x1(对应截距项θ₀和特征项θ₁)
  • 你的代码中 pn 被错误构造成 3x1 向量,转置后为 1x3,无法与 2x1 的 best 进行矩阵乘法(第一个矩阵的列数3 ≠ 第二个矩阵的行数2)

同时你的归一化函数逻辑错误,会导致预测值偏差,需要一并修正。

具体解决方案

1. 修正归一化函数

当前归一化公式不符合标准min-max缩放逻辑,替换为正确实现:

function [x, maxs, mins] = normalize(x)
    mins = min(x);
    maxs = max(x);
    x = (x - mins) ./ (maxs - mins); % 标准min-max缩放至[0,1]区间
end

2. 修正预测代码的维度问题

你想要对两个输入值(7和7)进行预测,需构造符合模型输入要求的矩阵(每行对应一个样本,包含截距项1和归一化后的特征值):

% 预测部分修正代码
p = [7; 7]; % 待预测的输入值(2x1向量)
pn = (p - mins) ./ (maxs - mins); % 使用训练数据的min/max进行归一化
pn = [ones(length(p), 1), pn]; % 添加截距项列,构造2x2的输入矩阵
r = pn * best; % 矩阵乘法得到2x1的预测结果(对应每个输入值的预测利润)

3. 额外优化建议

  • 原代码中 yCalc1 = b1*x; 是无截距项的线性回归结果,若要与梯度下降的带截距模型对比,需修改为 yCalc1 = b0 + b1*x(通过 [ones(m,1),x]\y 求解包含截距的参数)
  • 确保 cost 函数实现正确(标准均方误差公式:J(theta) = (1/(2*m)) * sum((xo*theta - y).^2))

内容的提问来源于stack exchange,提问作者user14018621

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:50:41