'Outliers.m' вызывается из файла .m более высокого уровня. Все переменные определены в файле более высокого уровня и установлены как глобальные для доступа с помощью Outliers.m. Целью кода является выявление выбросов с использованием критерия Шовене, и для этого я должен вычислить интеграл распределения Гаусса, используя функцию интеграла и дескрипторы функций. Код работает и дает разумные значения, когда я ввожу определенные переменные в качестве теста, но я не могу заставить его работать в цикле. Мой набор данных состоит из 7 отдельных образцов, каждый 1x30, и все они должны быть проанализированы. У меня были различные ошибки, я прочитал руководство по интегральным и функциональным дескрипторам, но, похоже, не могу найти решение... Любая помощь или руководство будут очень признательны.... Вот мой код:
n = 7
for x = 1:n
for y = 1:30
z(x,y) = abs((cc(x,y) - mastercc(1,y))/masterccstd(1,y));
xmax(x,y) = mastercc(1,y)+z(x,y)*masterccstd(1,y);
xmin(x,y) = mastercc(1,y)-z(x,y)*masterccstd(1,y);
p(x,y) = 1/(masterccstd(1,y)*(sqrt(2*pi)));
fun(x,y)= @(x,y,z) (exp(-1/2)*z(x,y).^2);
q(x,y) = integral(fun(x,y),xmin(x,y),xmax(x,y),'ArrayValued',true);
pq(x,y) = p(x,y)*q(x,y); % probability
value(x,y) = n*(1/pq(x,y));
count(x,y) = logical(value(x,y) <0.5);
badbins(x)=sum(count(x,:));
end
end
'ArrayValued'
и установлена true
? Из того, что я вижу, вывод вашей функцииfun
является скаляром, не так ли? Но из вашего комментария ниже похоже, что вы даже не используете этот код. Правильно ли вы определяете, передаете и вызываете свой дескриптор функции?:fun = @(z)exp(-1/2)*z.^2;
q(x,y) = integral(fun(z(x,y)),xmin(x,y),xmax(x,y));
. - person horchler   schedule 25.10.2013