• Регистрация
Sinkevich
Sinkevich0.00
н/д
  • Написать
  • Подписаться

Вывод I/Q сигнала в wav-файл

Доброго времени Подскажите, в чем допускаю ошибку при записи сигнала? ... s = A*exp(1i*samples); % повторение импульса nChirps = 3; % Число повторений tpause = 2; % пауза z = complex(zeros(1, tpause*...

Доброго времени

Подскажите, в чем допускаю ошибку при записи сигнала?

...
s = A*exp(1i*samples);

% повторение импульса
nChirps = 3; % Число повторений
tpause = 2; % пауза
z = complex(zeros(1, tpause*fs));
chirpMulti = repmat([s z], nChirps);

nBits = 16; % 16-битный файл
filename='D:\Chirp\chirp.wav';

audiowrite(filename,real(chirpMulti),fs, nBits)) 

Теги

      16.03.2021

      Комментарии

      • aBoomest
        aBoomest+910.89
        17.03.2021 09:12

        1. Какая ошибка?
        2. Можете объяснить эти строчки?

        z = complex(zeros(1, tpause*fs));
        chirpMulti = repmat([s z], nChirps);
        • Sinkevich
          Sinkevich0.00
          18.03.2021 19:09

          1. Ошибка:

          Error using audiowrite (line 200)
          Unsupported number of channels.

          Error in chirp (line 62)
          audiowrite(filename,(chirpMulti),fs, 'BitsPerSample', nBits)

          2. Примерно смогу объяснить. Я новичок в матлабе, и касаемо того, что делаю (осуществление паузы, создание сигнала) информации нашел немного. Возможно не там искал. Слепил, грубо говоря, из того, что видел, какие варианты были. Так проще понять. Увидел, попробовал, понял - использую.

          Осуществление паузы. Она зависит от количества нулей.

          samples = 2 * pi * fcarrier .* t + 2 * pi * omega * t1.^2 / (2*tf);
          s = A*exp(1i*samples); % комплексный лчм
          
          % повторение импульса
          nChirps = 3; % Число повторений сигнала
          tpause = 2; % пауза между излучениями (2 секунды)
          z = complex(zeros(1, tpause*fs)); % заполнение матрицы нулями для осуществления паузы
          chirpMulti = repmat([s z], nChirps);

          Изначально я писал так:

          nChirps = 5 % Число повторений
          tpause = 1;
          chirpMulti = s; % Первый повтор
          for i = 1:nChirps-1
          chirpMulti = repmat([s zeros(1, tpause*fs)], 1, nChirps); % повторение излучения с паузой в 1 секунду
          end

          Но потом решил сделать I/Q сигнал, и окончательно запутался, и не особо понимаю, в верном направлении двигаюсь, или нет. Ошибка только в выводе файла, в остальном все работает.

          Идея была записать в левый и правый канал синфазную и квадратурную составляющую сигнала. Как обмануть модуль записи не могу понять.

          clear all
          close all
          clc
          
          fs = 16000; % частота дискретизации
          f0 = 100; % начальная частота
          f1 = 8000; % конечная частота
          A = 1; % амплитуда
          
          fcarrier = (f0 + f1) / 2;
          omega = f1 - f0;
          tf = 2; % время излучения сигнала
          
          %один импульс
          t = 0 : 1/fs : tf - 1/fs;
          t1 = -tf/2 : 1/fs : tf/2 - 1/fs;
          
          samples = 2 * pi * fcarrier .* t + 2 * pi * omega * t1.^2 / (2*tf);
          
          %s = A*cos(samples) + j*A*sin(samples);
          %s = A*exp(1i*samples) - A*exp((-1j*samples));
          s = A*exp(1i*samples); % комплексный лчм
          
          % повторение импульса
          nChirps = 3; % Число повторений
          tpause = 2; % пауза (2 секунды)
          z = complex(zeros(1, tpause*fs));
          chirpMulti = repmat([s z], nChirps);
          
          chirpMulti_Real = real(chirpMulti);
          %signal = [chirpMulti_Real chirpMulti_Image];
          
          % Запись в аудиофайл
          nBits = 16; % 16-битный файл
          filename='D:\Chirp\chirp.wav';
          
          audiowrite(filename,chirpMulti,fs, 'BitsPerSample', nBits)
          • aBoomest
            aBoomest+910.89
            19.03.2021 09:08
            z = complex(zeros(1, tpause*fs));

            А у вас должно быть комплексное число?

            • Sinkevich
              Sinkevich0.00
              19.03.2021 10:24

              Да, но конкретно с этой строкой я сомневаюсь, так как нашел, добавил отредактировав - ошибки не появилось. Только в записи файла.

        • aBoomest
          aBoomest+910.89
          20.03.2021 00:39

          не особо ясно про к.ч. может код? может так удастся что-то найти?