📄 make_increment.m
字号:
function [ INCREMENT ] = make_increment(SYMBOLS,NEXT,Rhh)
%function [ INCREMENT ] = make_increment(SYMBOLS,PREVIOUS,Rhh)
%
% MAKE_INCREMENT:
% This function returns a lookuptable containing the
% metric increments related to moving from state n to m.
% The data is arranged so that the increment accosiated
% with a move from state n to m is located in
% INCREMENT(n,m). To minimize computations only legal
% transitions are considdered.
%
% SYNTAX: [ INCREMENT ] = make_increment(SYMBOLS,NEXT,Rhh)
%
% INPUT: SYMBOLS: The table of symbols corresponding the the state-
% numbers.
% NEXT: A transition table containing the next legal
% states, as it is generated by the code make_next.
% Rhh: The autocorrelation as estimated by mf.m.
%
% OUTPUT: INCREMENT:
% The increment table as described above.
%
% SUB_FUNC: None
%
% WARNINGS: There is no syntax checking on input or output.
%
% TEST(S): By hand, against expected values.
%
% AUTOR: Jan H. Mikkelsen / Arne Norre Ekstr鴐
% EMAIL: hmi@kom.auc.dk / aneks@kom.auc.dk
%
% $Id: make_increment.m,v 1.6 1997/09/22 11:39:34 aneks Exp $
% IN THIS PEACE OF CODE THE SYNTAX CHECKING IS MINIMAL
% THIS HAS BEEN CHOSEN TO AVOID THE OVERHEAD. RECALL THAT
% THIS CODE IS EXECUTED EACH TIME A BURST IS RECEIVED.
% FIND THE NUMBER OF SYMBOLS THAT WE HAVE
%
[M,Lh]=size(SYMBOLS);
% INITIALIZE THE INCREMENT MATRIX
%
INCREMENT=zeros(M);
% RECALL THAT THE I SEQUENCE AS IT IS STORED IN STORED AS:
% [ I(n-1) I(n-2) I(n-3) ... I(n-Lh) ]
%
% ALSO RECALL THAT Rhh IS STORED AS:
% [ Rhh(1) Rhh(2) Rhh(3) ... Rhh(Lh) ]
%
% THE FORMULA TO USE IS:
% INCREMENT(n,m)
% =
% real(conj(I(n))*(I(n-Lh)*Rhh(Lh)+I(n-Lh+1)*Rhh(Lh-1)+...+I(n-1)*Rhh(1))
%
% THEY CAN THUS BE MULTIPLIED DIRECTLY WITH EACH OTHER
% LOOP OVER THE STATES, AS FOUND IN THE ROWS IN SYMBOLS.
%
for n=1:M,
% for m=1:M,
% ONLY TWO LEGAL NEXT STATES EXIST, SO THE LOOP IS UNROLLED
% 按照文档上的说法应该是一正一负,这个好像没看出来。两个的SYMBOLS的第一列的符号是相反的
%所以得出的INCREMENT,是相反的。
m=NEXT(n,1);
% n=PREVIOUS(m,1);
INCREMENT(n,m)=real(conj(SYMBOLS(m,1))*SYMBOLS(n,:)*Rhh(2:Lh+1).');
% INCREMENT(n,m)=real(conj(SYMBOLS(m,1))*SYMBOLS(n,:)*Rhh(2:Lh+1).');
%这个好像太浪费了,这样行不行INCREMENT(m,1)=........
%需要和后面的关系对应好
%后面注释的是
%real的意思是只是取实部,好像只是实部相乘就行?两个的第一列的数据刚好是相反的
%实现了
m=NEXT(n,2);
% n=PREVIOUS(m,2);
INCREMENT(n,m)=real(conj(SYMBOLS(m,1))*SYMBOLS(n,:)*Rhh(2:Lh+1).');
%INCREMENT(n,2)=...........
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -