2010-11-10 21 views
0

bonjour s'il vous plaît j'essaye de générer la séquence pn et je l'ai fonction mais quand j'essaye de le répéter plusieurs fois avec la boucle for elle me donne une réponse de temps seulement et n'affecte pas l'utilisation pour la boucle pourquoi? ceci est mon codecomment répéter la fonction avec pour boucle?

%e.g. noof flip flops 4 ==> 
function[op_seq]=pnseq(a,b,c) 
a = 7; 
%generator polynomial x4+x+1 ==> 
b = [1 0 0 1 1 0 1 ] 
%initial state [1 0 0 0] ==> 
c = [1 0 0 0 1 0 1 ] 
%refere figure to set a relation between tap function and initial state 
% 
for j= 1:50, 
x = a; 
tap_ff =b; 
int_stat= c; 
for i = 1:1: length(int_stat) 
    old_stat(i) = int_stat(i); 
    gen_pol(i) = tap_ff(i); 
end 
len = (2 ^x)-1; 
gen_pol(i+1)= 1; 
gen_l = length(gen_pol); 
old_l = length(old_stat); 
for i1 = 1: 1:len 
    % feed back input genration 
    t = 1; 
    for i2 = 1:old_l 
     if gen_pol(i2)==1 
      stat_str(t) = old_stat(gen_l - i2); 
      i2 = i2+1; 
      t = t+1; 
     else 
      i2 = i2+1; 
     end 
    end 
    stat_l = length(stat_str); 
    feed_ip = stat_str(1); 
    for i3 = 1: stat_l-1 
     feed_ip = bitxor(feed_ip,stat_str(i3 + 1)); 
     feed_ipmag(i1) = feed_ip; 
     i3 = i3+1; 
    end 
    % shifting elements 
    new_stat = feed_ip; 
    for i4 = 1:1:old_l 
     new_stat(i4+1) = old_stat(i4); 
     old_stat(i4)= new_stat(i4); 
    end 
    op_seq(i1) = new_stat(old_l +1); 
end 
%op_seq; 
end 

Répondre

0

Je suppose que vous faites quelque chose comme:

for n = 1:10 
    ... 
    % set a,b,c for this n 
    ... 
    op_seq =pnseq(a,b,c) 
    ... 
end 

et que vous voyez la même op_seq sortie pour chaque cas. C'est parce que vous avez a,b,c comme entrées, mais vous les écrasez au début de votre fonction. Si je supprime, ou commentez les lignes suivantes dans votre fonction:

a = 7; 
b = [1 0 0 1 1 0 1 ] 
c = [1 0 0 0 1 0 1 ] 

Puis-je obtenir des résultats différents pour appeler la fonction avec différents a,b,c. Il n'y a rien de aléatoire dans votre fonction, donc les mêmes entrées donnent les mêmes sorties.

+0

merci de répondre mais qu'est-ce que vous entendez par (pour boucle que vous faites référence doit vraiment être en dehors de votre fonction.). Signifient le code sera ce pour j = 1:50 function [op_seq] = pnseq (a, b, c) a = 7; % polynôme générateur x4 + x + 1 ==> b = [1 0 0 1 1 0 1] %% état initial [1 0 0 0] ==> c = [1 0 0 0 1 0 1] ... mais ça me donne une erreur et comment je supprime a, b, c du code ça ne va pas wok ce sont les entrées et enfin s'il vous plait clair pour moi (il n'y a rien de aléatoire dans votre fonction, donc les mêmes entrées donnent les mêmes sorties .) cette phrase veux-tu dire que ce n'est pas la fonction appropriée générant la séquence pn – dina

+0

@dina voir ma réponse éditée. Il est important de régler 'a, b, c' à chaque fois avant d'appeler la fonction. "voulez-vous dire que ce n'est pas une fonction appropriée qui génère une séquence pn": non, je dis juste que vous devez faire varier les entrées. Les mêmes entrées donnent les mêmes sorties. – Ramashalanka

+0

oui je reçois votre point merci vraiment pour votre réponse – dina