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

Matlab中数据集标准化时出现索引越界错误,求原因及解决

错误原因分析

核心问题1:循环维度完全错配

[n,p] = size(X)中,n是数据集的观测行数,p是变量列数。你要标准化的是每个变量(每一列),所以循环应该遍历列索引范围1:p,但代码里写的是for i = 1:n,相当于用观测行数去循环变量列,逻辑完全颠倒。

核心问题2:手动自增索引直接触发越界

循环里额外写了i = i + 1,会强制索引跳步:

  • 第一次循环i初始为1,执行自增后变成2,访问X(:,2)暂时没问题;
  • 随着循环推进,i会快速超过数据集的实际列数(报错提示列数最大为114),这时X(:,i)就会触发"索引超出数组边界"的错误。

修正后的标准化代码段

LoadLargeDataSetGranese

% standardize data
[n,p] = size(X); % n=观测数, p=变量数
Xs = zeros(n,p); 
for i = 1:p % 遍历所有变量(列)
    Xs(:,i) = (X(:,i) - mean(X(:,i)))/std(X(:,i)); 
end

内容的提问来源于stack exchange,提问作者Carlos Barúa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:35:02