Индексы индексов должны быть либо действительными положительными целыми числами, либо логической ошибкой со средней функцией в matlab - PullRequest
3 голосов
/ 18 августа 2011

У меня есть гигантский массив данных, в котором в каждой строке я хочу извлечь определенные столбцы, а затем усреднить числа, которые я извлекаю. Это мой код:

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

Я получаю ошибку на первой итерации. Извлеченный массив:

[NaN NaN NaN NaN 15.64]

И что я получу, когда наберу 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)))

Вызов этого из командной строки приводит к той же ошибке. Однако, если я пытаюсь использовать ковариационную функцию (cov), я не получаю ошибку. Это кажется мне очень странным!

Спасибо за вашу помощь!

Ответы [ 2 ]

12 голосов
/ 18 августа 2011

Я подозреваю, что вы определили переменную mean с тем же именем, что и встроенная функция. Вы можете проверить, используя:

which mean

Чтобы решить проблему, удалите переменную из памяти: clear mean, затем исправьте все ссылки на эту переменную ...

0 голосов
/ 09 июля 2014

У меня была похожая проблема. Ошибка в моем случае произошла из-за того, что в качестве имени переменной использовалось среднее значение, которое также является именем функции.

Поскольку это было среднее значение, MATLAB рассматривал ключевое слово означает как имя переменной, но не функцию.

Надеюсь, мой комментарий поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...