代码
Rm = corr(timeModel, 'Type', 'Spearman');
Rm
%First row of Rm contains the correlation coefficients between the values of avgExcTime and the expected execution times for all the possible values of KEY3:0
Rc = Rm(1,2:17);
%The entry of Rc with the highest positive value corresponds to the guessed
%key (the first entry of Rc is 1 and corresponds to the autocorrelation of
%avgExcTime, therefore is discarded)
[corr,idx] = max(Rc);
guessedKeyNibble = idx-1```
The error
位置 1 的索引无效。数组索引必须是正整数或逻辑值。
第 3 部分 (第 60 行) 出错 Rm = corr(timeModel, 'Type', 'Spearman'); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```
有什么办法可以解决这个问题?TimeModel 的大小为 16 x 17,这是正确的,我真的不知道这里出了什么问题?
您似乎遇到了与 MATLAB 内置
corr
函数的命名冲突。以下是发生的情况以及解决方法:问题
您可能执行了类似如下的一行:
通过将输出分配给名为 的变量
corr
,您可以隐藏MATLAB 的内置corr
函数。因此,任何后续调用corr(...)
都将被解释为尝试索引您的变量,corr
而不是调用该函数。如何修复
清除冲突变量
从工作区中删除
corr
变量以恢复对内置函数的访问:使用不同的变量名
为了防止此问题再次发生,请选择与 MATLAB 内置函数不冲突的变量名。例如:
现在,您可以安全地使用该
corr
功能而不会发生任何冲突:最佳实践
避免使用内置函数的名称:始终检查 MATLAB 的文档以确保变量名不会与现有函数冲突。
使用描述性变量名:不要使用像这样的通用名称
corr
,而要使用更具描述性的名称(如maxCorrelation
或)correlationValue
,以增强代码的可读性和可维护性。概括
通过清除冲突的变量并为变量选择唯一的名称,您可以防止掩盖内置函数并确保代码顺利运行。
希望这能有所帮助!如果您还有其他问题,请告诉我。