diff options
Diffstat (limited to 'viterbi_generator/utils/lower_utils/generate_increment.m')
-rw-r--r-- | viterbi_generator/utils/lower_utils/generate_increment.m | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/viterbi_generator/utils/lower_utils/generate_increment.m b/viterbi_generator/utils/lower_utils/generate_increment.m new file mode 100644 index 0000000..9575796 --- /dev/null +++ b/viterbi_generator/utils/lower_utils/generate_increment.m @@ -0,0 +1,72 @@ +function [INCREMENT NUMBERS] = generate_increment(SYMBOLS,PREVIOUS)%,Rhh) + + ########################################################################### + # Copyright (C) 2008 by Piotr Krysik # + # pkrysik@stud.elka.pw.edu.pl # + # # + # This program is free software; you can redistribute it and/or modify # + # it under the terms of the GNU General Public License as published by # + # the Free Software Foundation; either version 3 of the License, or # + # (at your option) any later version. # + # # + # This program is distributed in the hope that it will be useful, # + # but WITHOUT ANY WARRANTY; without even the implied warranty of # + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # + # GNU General Public License for more details. # + # # + # You should have received a copy of the GNU General Public License # + # along with this program; if not, write to the # + # Free Software Foundation, Inc., # + # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # + ########################################################################### + +MSK_STATES_NUM=4; % 1,-1,j,-j +[POSIBLE_SEQ_NUM,Lh]=size(SYMBOLS); +INCREMENT_NUM=2**(Lh-1); +%Lh - channel memory length +%POSIBLE_SEQ_NUM - number of posible sequences of MSK symbols (1,-1,j,-j) for given Lh + +%INCREMENT=zeros(2,Lh,POSIBLE_SEQ_NUM/8); + +% Rhh IS STORED AS: +% [ Rhh(1) Rhh(2) Rhh(3) ... Rhh(Lh) ] +INCREMENT=zeros(INCREMENT_NUM, Lh); + +for n=1:POSIBLE_SEQ_NUM, + % ONLY TWO LEGAL PREVIOUS STATES EXIST, SO THE LOOP IS UNROLLED + m=PREVIOUS(n,1); + vector=[conj(SYMBOLS(n,1))* SYMBOLS(m,:)]; + number=complex_vect2number(vector); + if(number>0) + INCREMENT(number,:)=vector; + end + + NUMBERS(m,n)=number; + + m=PREVIOUS(n,2); + vector=[conj(SYMBOLS(n,1))* SYMBOLS(m,:)]; + number=complex_vect2number(vector); + if(number>0) + INCREMENT(number,:)=vector; + end + NUMBERS(m,n)=number; +end + +%test_inc=zeros(2**(Lh+1),2**(Lh+1)); +%for n=1:2**(Lh+1), +% for m=1:2**(Lh+1), +% number=NUMBERS(m,n); + +% if(number!=0) +% sign=1; +% if(number<0), +% sign=-1; +% number=-number; +% end +% test_inc(m,n)=real(sign*INCREMENT(number,:)*Rhh(2:Lh+1).'); +% end +% end +%end +%INCREMENT +%test_inc +%NUMBERS |