Octave中loadData函数错误排查:无法正确生成设计矩阵与输出向量
问题排查与修正方案
原代码的核心错误
- 重复调用
load(filename)三次,完全冗余且浪费资源 rows(filename)和size(filename)用法错误:filename是字符串,不能直接用这两个函数获取数据维度,必须基于加载后的data矩阵操作- 未生成带偏置项的设计矩阵X,也未正确提取输出向量y
- 函数末尾没有返回正确的X和y值
修正后的代码
function [X,y] = loadData(filename) % 加载数据文件 data = load(filename); % 获取样本数m和总列数,计算特征数n(总列数减1,因最后一列是输出y) [m, total_cols] = size(data); n = total_cols - 1; % 生成设计矩阵X:添加全1偏置列,拼接前n列特征 X = [ones(m, 1), data(:, 1:n)]; % 提取最后一列作为输出向量y y = data(:, end); end
代码说明
- 仅加载一次数据到
data矩阵,避免重复IO操作 - 通过
size(data)获取真实数据维度:m为样本行数,total_cols为总列数(包含特征与输出) - 设计矩阵X的构造:先添加全1列作为偏置项,再拼接原数据的前n列特征,最终得到m×(n+1)的矩阵
- 直接取
data的最后一列作为输出向量y,确保与需求匹配
内容的提问来源于stack exchange,提问作者Spandana Susal
相关产品推荐
相关产品推荐

