• Регистрация
Vanchous
Vanchous 0.00
н/д

обнаружитель сигнала со случайной начальной фазой

18.01.2021

Доброго времени суток!

Только начинаю работать в малаб, столкнулся с проблемой задания случайной начальной фазы для гармонического сигнала.Уже все перепробовал никак не получается реализовать. С фазой, заданной как константа проблем нет.Если есть какой-то пример кода был бы очень признателен.

Теги

    18.01.2021

    Ответы

    • aBoomest
      aBoomest+942.89
      18.01.2021 21:16

      Поясните подробнее что делаете, ибо фаза это или не фаза - это дело десятое. Число случайное - это например ф-ции randn или randn или еще другие можно найти . . . А уж как вы потом это число используете в качестве фазы гармоники, или коэфициента отражения поверхности, . . . - значения не имеет. Поэтому есть предположение, что имеет значение что именно вы делаете.

      • Vanchous
        Vanchous0.00
        18.01.2021 23:26

        Последний вот такой вариант, но phi почему то все равно 0 хотя с по-разному всегда заполняется

        clc;
        close all;
        clear all;
        N = 108000;
        c = randi([0, 1], 1, N);
        for n=2:length(c)
        phi(1)=0;
        if c(n)==1
        phi(n)=phi(n-1);
        elseif c(n)==0;
        phi(n)=phi(n-1)+pi/180;
        end
        end
        A0=1;
        fc =10; % часота несущего колебания
        fz = 1; % частота символов
        fd = 20*fc; % чатоста дискретизации
        td = 1/fd; % период дискретизации
        t = 0 : td : N/fz-td; % массив времени
        M = fd/fz; % количество отсчетов на бит
        phi = repmat(phi,M,1); % повторяем последовательность по строкам
        phi = phi(:)'; % 
        S1 = A0.*sin(2*pi*fc*t + phi);

         

        • aBoomest
          aBoomest+942.89
          19.01.2021 12:39

          Не вдаваясь в подробности что вы делаете, ибо мало что понятно, . . .
          - 21.6 млн отсчетов с лишним. Не многовато? Длительность при частоте 200 Гц составит более суток вроде как. Это необходимо?
          - у вас несомненно t и phi имеет разную размерность, а так нельзя. Исправьте расмерности этих переменных.

          • Vanchous
            Vanchous0.00
            19.01.2021 18:55

            для оптимальной работы обнаружителя сказали сделать большоечисло отсчетов(если делаю меньше картина не меняется)

            у t и phi как японимаю одинаковая размерность 

            (скрины прикрепил)

             

            если есть какой то другой вариант реализации случайной начальной фазы буду рад посмотреть)

            • Vanchous
              Vanchous0.00
              19.01.2021 18:56
        • aBoomest
          aBoomest+942.89
          20.01.2021 08:08

          для оптимальной работы обнаружителя сказали сделать большоечисло отсчетов(если делаю меньше картина не меняется)

          Так если не меняется, зачем так много. Надо всегда максссссимально уменьшать все ресурсопотребления до того момента как начинает теряться точность необходимая.

          у t и phi как японимаю одинаковая размерность 

          Согласен, тут я чето нетуда посмотерл.

          Вобще фаза у вас меняется на большом количестве это видно, хотя и весьма трудно анализировать. И все равно совершенно не ясно что делаете. Ну да ладно. Вам как надо стоб фаза менялась? непрерывно? или на каждые M?

          • Marat
            Marat+208.00
            20.01.2021 12:32

            Если задача сводится просто к генерации синусоиды со случайной начальной фазой, то это значение начальной фазы и будет константой. Просто эта константа будет принимать случайное значение каждый раз при выполнении скрипта.

            N = 1;
            phi = randi(180, 1, 1);
            phi = deg2rad(phi);
            A0=1;
            fc =10; % часота несущего колебания
            fz = 1; % частота символов
            fd = 20*fc; % чатоста дискретизации
            td = 1/fd; % период дискретизации
            t = 0 : td : N/fz-td; % массив времени
            M = fd/fz; % количество отсчетов на бит
            S1 = A0.*sin(2*pi*fc*t + phi); 
            plot(t,S1)

             

            • aBoomest
              aBoomest+942.89
              20.01.2021 15:25

              Ощущение, исходя из кода @Vanchous, что нужно иметь длиннющую последовательность синусоид, каждая длиной по 200 отсчетов и имеет свою фазу.

              @Vanchous

              Если так, то в коде от  @Marat S1 это у вас одна синусоида с заданной фазой. Можно завести еще переменную S2.

              S2 = [];

              И после каждого вычисления очередного значения S1 с нужной фазой добавлять его к S2:

              S2 = [S2; S1];

               

              • Vanchous
                Vanchous0.00
                27.01.2021 15:22

                Со случайной фазой вроде добился того что имел в виду преподаватель,спасибо большое.

                Теперь появились вопросы поповоду самого обнаружителя сигнала.. Пытаюсь сделать через согласованный фильтр, не могу понялть это нормальная реакция сф ? вроде пик есть, но выглядит как то странно это.(скрин прикрепил)

                подскажите пожалуйста в чем ошибка и в правильном ли направлении вообще двигаюсь?

                phi = randi(180, 1, 1);

                phi = deg2rad(phi);

                A0=1;

                 

                f0=4; % Частота сигнала, МГц

                fd = 10; % чатоста дискретизации

                td = 1/fd; % период дискретизации

                Noise=randn(1,25001);

                figure (1); % вывод на экран изображение шума

                 

                plot (t(1:25000),Noise (1:25000));

                 

                xlabel ('Time, microsec');

                 

                ylabel ('Amplitude, V');

                 

                grid on;

                 

                title ('Noise');

                 

                % % создание сигнала с шумом

                S1 = A0.*sin(2*pi*f0*t + phi)+ Noise ;

                 

                figure (2);

                 

                plot(t(1:500),S1(1:500));

                 

                grid on;

                 

                xlabel('time, microsec');

                 

                ylabel ('amplitude, V');

                 

                title('Signal')

                for q=1:1:500

                 

                h_SF(q)=S1(501-q);

                 

                end

                 

                figure (3);

                 

                plot (t(1:500),h_SF(1:500));

                 

                grid on;

                 

                xlabel('frequency,MegaHz');

                 

                ylabel ('amplitude, V');

                 

                title('Impulse haracneristic')

                 

                % реакция согласованного фильтра на один ЛЧМ-импульс

                ReactionSF1=filter (h_SF,1,S1)./(0.5*50*1000);

                 

                figure (4); % вывод на экран реакции

                 

                plot (t(1:1000),ReactionSF1(1:1000));

                 

                grid on;

                 

                xlabel('time');

                 

                ylabel ('amplitude');

                 

                title('Reaction for 1 imp');

                 

                % Вычисляем уровень сигнал\шум

                Noise_v_kv = power (Noise,2);

                 

                z=trapz(t,Noise_v_kv); % вычисление среднеквадратичного значения шума

                 

                S_N=max(abs(S1))./sqrt(z);

                 

                disp (S_N);% сигнал\шум

                 

                %создание детектора

                reaction=abs(ReactionSF1);

                 

                figure (5);

                plot(t(1:1000),reaction(1:1000));

              • Vanchous
                Vanchous0.00
                27.01.2021 19:12

                сейчас заметил, что если убираю полезный сигнал из смеси то выделяется то пик на реакции сф все равно присутствует...

                • aBoomest
                  aBoomest+942.89
                  27.01.2021 20:12

                  Ваш скрпт даж не запустился. Выложите запускающийся файл, в виде файла?

                  Вопрос более конкретный: импульсную характиристику вы как находите?

                  • Vanchous
                    Vanchous0.00
                    28.01.2021 14:23

                    Прикрепил файл.По поводу ИХ за основу брал программу обнаружителя сигнала там вот так искали ИХ (если честно тоже не очень понял как):

                    for q=1:1:500

                    h_SF(q)=S1(501-q);

                    end

                    figure (3);

                    plot (t(1:500),h_SF(1:500));

                    grid on;

                    xlabel('frequency,MegaHz');

                    ylabel ('amplitude, V');

                    title('Impulse haracneristic')

                    по поводу самой программы работает не правильно (если только шум оставляю то все равно пишет что есть сигнал, а если только полезный сигнал оставляютоон не видит его)

                    также если смотреть на графики то после ИХ сильно меняется амплитуда, подскажите пожалуйста почему?

                    • aBoomest
                      aBoomest+942.89
                      29.01.2021 20:03

                      https://www.youtube.com/watch?v=8GX7yADQv2M&list=PLmu_y3-DV2_kpP8oX_Uug0IbgH2T4hRPL&index=22

                      Вот это думаю все просто объяснит. Не могу сказать правильно у вас или нет, но правильные тенденции имеются. К сожалению нет в данный момент возможности покопаться, но вам нужна свертка вероятно, о чем и говорится в видео.