estimation probability over the part of an array
조회 수: 14 (최근 30일)
이전 댓글 표시
[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
답변 (4개)
Andrei Bobrov
2011년 5월 24일
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
2011년 5월 24일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!