как повторить функцию для цикла? - PullRequest
0 голосов
/ 10 ноября 2010

Я пытаюсь сгенерировать последовательность pn, и она работает.Однако, когда я пытаюсь вызвать функцию с разными входами в цикле for, она каждый раз дает одинаковые результаты.Как будто это не зависит от использования цикла for.Почему?

Это мой код:

%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

1 Ответ

0 голосов
/ 10 ноября 2010

Я предполагаю, что вы делаете что-то вроде:

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

и вы видите один и тот же вывод op_seq для каждого случая.Это потому, что у вас есть a,b,c в качестве входных данных, но вы перезаписываете их в начале своей функции.Если я удалю или закомментирую следующие строки в вашей функции:

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

Тогда я получу разные результаты для вызова функции с другим a,b,c.В вашей функции нет ничего случайного, поэтому одни и те же входы дают одинаковые выходы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...