estimation probability over the part of an array
11 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
[EDIT: 20110524 10:11 CDT - reformat - WDR]
Hello!
I have an array of data and I want to estimate the mean probability over the window of this array. I wrote the following code, but it shows me zeros except the last window of an array.
function y=pm(x,length)
for i=1:size(x)-length
m=mean(x(i:i+length));
s=std(x(i:i+length));
k(i)=probability_estimate(x(i:i+length),m,s);
end;
y=k;
end
function y=probability_estimate(x,m,s)
for i=1:length(x)
k(i)=lognpdf(x(i),m,s);
end;
y=mean(k);
end
>>d=pm(x,length);
would you be so kind to explain to me how to correct this code? Thank you for your answers!
0 comentarios
Respuestas (4)
Andrei Bobrov
el 24 de Mayo de 2011
function y=probability_estimate(x,m,s)
y=mean(lognpdf(x,m,s));
end
EDIT
idxs = bsxfun(@plus,1:l,(0:length(x)-l)');
outcell = arrayfun(@(y)mean(lognpdf(x(idxs(y,:)),...
mean(x(idxs(y,:))),std(x(idxs(y,:))))),1:size(idxs,1),'un',0);
d = [outcell{:}]';
your "length" -> "l"
with loop:
s1 = size(idxs,1);
d = zeros(s1,1);
for j = 1:s1
y = x(idxs(j,:));
d(j) = mean(lognpdf(y),mean(y),std(y));
end
Walter Roberson
el 24 de Mayo de 2011
size(x) is a two-element array. i=1:size(x)-length is not going to do what you want. Are you working with an array or with a row vector or with a column vector?
Also, please do not use a variable named "length" as you are very likely to run in to difficulties with the function of that name.
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!