下标索引必须是实数正整数或逻辑错误与matlab中的均值函数

use*_*638 3 matlab

我有一个巨大的数据阵列,我想在每一行中提取特定列,然后平均我提取的数字.这是我的代码:

for i=1:1000
    temp=data(i,:);
    index_data=temp([1,10,11,12,19]); %columns I want to extract
    data_final(i,1)=mean(index_data(~isnan(index_data)));
end
Run Code Online (Sandbox Code Playgroud)

我在第一次迭代时遇到错误.提取的数组是

[NaN NaN NaN NaN 15.64]
Run Code Online (Sandbox Code Playgroud)

当我输入index_data(~isnan(index_data))时得到的是15.64,这是我所期待的.但是,我得到了一个错误

??? Subscript indices must either be real positive integers or logicals.
Error in ==> mean(index_data(~isnan(index_data)))
Run Code Online (Sandbox Code Playgroud)

从命令行调用此方法会产生相同的错误.但是,如果我尝试使用协方差函数(cov),我不会得到错误.这对我来说真的很奇怪!

谢谢你的帮助!

Amr*_*mro 12

我怀疑你已经定义了一个mean与内置函数同名的变量.你可以检查使用:

which mean
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请从内存中删除变量:clear mean,然后更正此变量的所有引用...