Как получить доступ и стандартизировать элементы массива ячеек (Matlab) - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть структура данных массива ячеек, и я хочу стандартизировать ее элементы.Как я могу применить zscore или среднее значение и стандартное отклонение для каждого массива ячеек?Я пытался сделать следующее, но это неверно.Код ниже случайным образом генерирует 50 различных наборов данных каждый из 1000 элементов.Я даже попробовал следующее cellfun(@(x)(x-mu)./sg,X,'UniformOutput',false), но не могу вычислить mu (среднее) и sg (стандартное отклонение) для структуры клетки.Пожалуйста, помогите.

for n  = 1: 50

   x=rand(1,1000);

    X(n)=  {x} ;


end

XV = zscore(X);

1 Ответ

0 голосов
/ 19 сентября 2018

zscore - это функция в панели инструментов статистики, которой у меня нет.Документация гласит, что вы можете применить ее для стандартизации матрицы, используя опцию 'all' ( note! Это новинка для MATLAB R2018b):

zscore(X,0,'all'); % won't work in versions of MATLAB before R2018b

Если, как и у меня, у вас нет этого набора инструментов, он должен быть эквивалентен:

(X - mean(X(:))) / std(X(:));

Таким образом, мы можем написать анонимную функцию, например:

standardize = @(X)(X - mean(X(:))) / std(X(:));

или эквивалентно

standardize = @(X)zscore(X,0,'all');

Теперь вы можете применить эту функцию ко всем матрицам в массиве, используя cellfun:

X = cell(5,3);
for ii=1:numel(X)
  X{ii} = rand(1,1000);
end
XV = cellfun(standardize,X,'UniformOutput',false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...