Matlab 如何修复代码中的“索引超过矩阵维度”?

Matlab 如何修复代码中的“索引超过矩阵维度”?,matlab,matrix,indexing,dimensions,Matlab,Matrix,Indexing,Dimensions,当我在matlab中运行此代码时,我得到以下错误: 索引超过了矩阵维度。 Iskaprekar2第11行出错 sqTail=SqNumberRayLenOfNumber+1:lenOfNumber+lenOfNumber; 代码是: function result = isKaprekarNumber2(number) result=0; lenOfNumber = length(num2str(number)); numberArray = num2str(n

当我在matlab中运行此代码时,我得到以下错误:

索引超过了矩阵维度。 Iskaprekar2第11行出错 sqTail=SqNumberRayLenOfNumber+1:lenOfNumber+lenOfNumber; 代码是:

function result = isKaprekarNumber2(number)
    result=0;
    
    lenOfNumber = length(num2str(number));
    numberArray = num2str(number);
    
    sqOfNumber = number.^2;
    sqNumberArray = num2str(sqOfNumber);
    
    sqHead= sqNumberArray(1:lenOfNumber);
    sqTail= sqNumberArray(lenOfNumber+1:lenOfNumber+lenOfNumber);
    
    sumOfHeadAndTail = str2num(sqNumberArray(1:lenOfNumber))+str2num(sqNumberArray(lenOfNumber+1:lenOfNumber+lenOfNumber));
    
    if isequal(number,sumOfHeadAndTail)
        result=1;
    end
    
end
例如:2564


有人能帮我纠正错误吗?

错误准确地告诉您发生了什么。它出现在行sqTail=sqnumberraylenofNumber+1:lenOfNumber+lenOfNumber;上;。右边的索引是[5 6 7 8],但sqNumberArray只有7个元素sthx。如何增加sqNumberArray的元素?您需要仔细考虑您在这里实际要实现的目标。答案是不要向数组中添加更多元素!首先,sqTail没有正确定义,但在代码的后面甚至没有使用sqTail或sqHead。我的建议是学习如何在MATLAB中添加断点,在debug下查找,然后在sqTail行中添加断点,查看变量的值和大小。最后,您可以使用isequal,但奇怪的是,您需要考虑使用==。也许一些普通的MATLAB背景会有所帮助。祝你好运我非常感谢你的好话。