place value for elements which not in transition probability matrix.

1 次查看(过去 30 天)
I have sequence
qq= [1 3 3 4 1 5 4 6 3]
and I am making transition probability matrix p as follows
1 3 4 5 6
1 0 0.5 0 0.5 0
3 0 0.5 0.5 0 0
4 0.5 0 0 0 0.5
5 0 0 1 0 0
6 0 1 0 0 0
then I have another sequence which have some different values than qq, i.e.
qq1=[1 3 2 2 3 4 1 7 7 8 3 9 1]
for window of 5 I am selecting first 5 elements i.e. 1 3 2 2 3 and then taking their relative transition probability values from matrix p. i.e. for 1 3 2 2 3, p(1,3), p(3,2), p(2,2), p(2,3). Now I am sliding window and skipping 1st element and adding next element so elements are 3 2 2 3 4 and calculating transition probability values from matrix p. now again next values 2 2 3 4 1 and doing same thing upto last window i.e. 7 8 3 9 1.
so for that code is as follows
nm=numel(qq1);
N=5;
for k=1:nm-N+1;
w=qq(k:k+N-1);
for t=1:N-1;
x=w(t);
x1=w(t+1);
pv=p(x,x1);
lg(t)=log(pv);
sm=sum(lg);
end
f(k)=sm;
end
now for p(1,7),p(7,7),p(8,3) there is no value in p matrix so for that I want to take value 0.01 i.e. p(1,7)=0.01, p(7,7)=0.01, p(8,3)=0.01 so how to do this by editing above code or separately.

回答(1 个)

José-Luis
José-Luis 2016-12-14
编辑:José-Luis 2016-12-14
qq= [1 3 3 4 1 5 4 6 3] ;
[unik, ia, ib] = unique(qq,'stable');
subs = [ib(1:end-1) , ib(2:end)];
your_result = accumarray(subs, qq(1:end-1));
your_result = bsxfun(@rdivide,your_result,sum(your_result,2))

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by