Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 索引超过矩阵维数_Matlab_Neural Network - Fatal编程技术网

Matlab 索引超过矩阵维数

Matlab 索引超过矩阵维数,matlab,neural-network,Matlab,Neural Network,它在trainX=X(indTrain,:)中显示错误说 索引超过矩阵维数 有人能澄清一下吗?谢谢 顺便说一句,我有一个4x4798数据,前3行作为预测值,最后一行(第4行)是我的响应。如何将数据正确地分割为第一个3838列,作为我的训练集,剩下的作为测试集 谢谢 修正你的错误 要修复索引错误,您需要选择X的列索引,而不是行索引: X= [P(1,:,:); P(2,:,:); P(3,:,:)]; y= P(4:end,:); indTrain = randperm(4798)

它在
trainX=X(indTrain,:)中显示错误

索引超过矩阵维数

有人能澄清一下吗?谢谢

顺便说一句,我有一个
4x4798
数据,前3行作为预测值,最后一行
(第4行)
是我的响应。如何将数据正确地分割为第一个
3838列
,作为我的训练集,剩下的作为测试集

谢谢

修正你的错误 要修复索引错误,您需要选择
X
索引,而不是索引:

X= [P(1,:,:);
    P(2,:,:);
    P(3,:,:)];
y= P(4:end,:);
indTrain = randperm(4798);
indTrain = indTrain(1:3838);
trainX= X(indTrain,:);
trainy = y(indTrain); 
indTest = 3839:4798;
indTest(indTrain) = []; 
testX = X(indTest,:);
testy = y(indTest);
一些忠告 看起来你的
p
矩阵是4乘4798,它是二维的。因此,书写
P(1,:,:)
确实选择了第一行,但它给人的印象是
P
三维的,因为末尾有额外的
。不要那样做。这是一个坏习惯,使您的代码更难阅读/理解/调试

trainX = X(:, indTrain );  
此外,我不明白您试图用
indTest(indTrain)=[]
实现什么?您是否试图确定列车和测试集是互斥的?
由于测试集的大小为960且
indTrain
包含1:3838(随机排列),因此此行极有可能导致错误,因此您将再次出现“索引超过…”错误。
您已经将您的
indTrain
indTest
定义为相互排斥,不需要其他操作。如果你想格外小心,你可以使用


注意。谢谢你。我会注意你提到的习惯。你和我意识到了你在上面强调的论点,并将其删除。
X = P(1:3,:); % select all three rows at once
y = P(4,:); % no need for 4:end here - again, gives wrong impression as if you expect more than a single label per x.
indTest = setdiff( indTest, indTrain );