lennen 0 29 ноября, 2018 Опубликовано 29 ноября, 2018 · Жалоба Я генерирую сигнал векторным генератором, задал частоту дискретизации 1000 кГц, то есть полоса сигнала 1 МГц, 0.5 МГц слева несущей частоты и 0.5 МГц справа, я прав? Тогда имеем на приеме необходимость анализа полосы 1 МГц. В приборе доступно 4.167 МГц, то есть на каждую выборку моего сигнала теоретически приходится 4.167 выборок с анализатора спектра, опять же, ничего не путаю? Итак, в итоге получаем, что мне нужно в Матлабе использовать какой-то фильтр, который бы из 4.167 выборок сделал одну. Подскажите несложное и правильное решение, чтобы не ломать голову? Я бы мог просто откидывать лишние выборки, но дробный коэффициент заставляет меня пока сильно напрячься + фильтр, наверное, эффективнее был бы здесь, но вот хочу услышать варианты для моего случая. Принимаю обычный 13-позиционный код Баркера, на приеме отлично вижу как синхросигнал, так и информационный код, но надо дальше с ним что-то делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 28 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба y=resample(x,1000,4167); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lennen 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба Шикарно, в принципе решение, спасибо! Но думаю еще, а так же теряется информация об амплитудах остальных точек. Можно как-то использовать эти 4,167 выборки для накопления информации об амплитуде сигнала? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lennen 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба В общем, немного расширяется суть топика. Ресемпл я сделал, серьезно помогло. Передаю на синхросигнале длинную постедовательность Баркера 13-позиционную, а в качестве информации зацикленный код Баркера 13-позиционный, так вот, на графиках, я приложил, видно, что все принял на ура. Но это на глаз так. 1. Амплитуда постоянно скачет, как это устранить. 2. Как проще сделать правильный детектор? Чтобы в итоге я получил просто битовую последовательность I и Q и мог дальше это интерпретировать как QAM-модуляцию... 3. Понял, что вопрос немного расширяется. Там в сигнале видно, что присутствует паразитная ненулевая частота, как ее лучше убрать Сейчас примерно так все представляю, но не получилось! Сигнал после кода все-равно скачет по гармонике. fid=fopen('C:\Users\User\Documents\UDP_log.pcm','r'); sig=fread(fid,inf,'int16'); I = sig(1:2:end); Q = sig(2:2:end); fclose(fid); sI = smooth(I,4); sQ = smooth(Q,4); yI=resample(sI,1000,4167); yQ=resample(sQ,1000,4167); carrSynch = comm.CarrierSynchronizer( ... 'SamplesPerSymbol',1,'Modulation','QPSK'); [ssI,phErrI] = carrSynch(yI); [ssQ,phErrQ] = carrSynch(yQ) plot(ssI); hold on; plot(ssQ); hold off; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lennen 0 30 ноября, 2018 Опубликовано 30 ноября, 2018 · Жалоба Попробовал еще так. M = 4; fs = 1e6; foffset = 100; carriersync = comm.CarrierSynchronizer('Modulation','QPSK', ... 'DampingFactor',0.05,'NormalizedLoopBandwidth',0.01); syncInfo = info(carriersync) aa = [foffset/fs syncInfo.NormalizedPullInRange/(2*pi)] carriersync.DampingFactor = aa(1)*1000; fid=fopen('C:\Users\User\Documents\UDP_log.pcm','r'); sig=fread(fid,inf,'int16'); I = sig(1:2:end); Q = sig(2:2:end); fclose(fid); sI = smooth(I,4); sQ = smooth(Q,4); yI=resample(sI,1000,4167); yQ=resample(sQ,1000,4167); ss = I+1i*Q; [ssI,phErrI] = carrSynch(ss); plot(ssI); hold on; Но получается, пока не могу въехать в тему, как использовать CarrierSynchronizer и нужен ли он тут вообще. Картинка может служить логотипом или продолжением кубизма-круголизма-импрессионизма. Я так-то осознаю чуть чуть, что раз эллипсоид, нужно устранить IQ дисбаланс, а раз все смешалось в круг, надо применить то, что пробовал. Но вот я не могу до конца понять, подскажите, пожалуйста, чтобы я все таки получил долгожданные точки созвездия:) Попробовал эту функцию без компенсатора: compSig = iqImbComp(ss); Но что-то не так может настраиваю. Если мои вопросы очень простые, прошу наставить, что я могу сделать следующим шагом. Возможно уже есть готовое решение на Матлабе, которым могу воспользоваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lennen 0 2 декабря, 2018 Опубликовано 2 декабря, 2018 · Жалоба Ок, можно тогда проще. Допустим, я принял такое созвездие, как на рисунке. Частота дискретизации на передатчике 1 МГц. На приеме полоса 4,167 МГц. В двух словах то все просто, данные то я уже на глаз различаю. Просто в каком смысле - созвездие эллипсоид, значит дисбалланс I и Q, и созвездие с размытыми точками и крутящейся фазой, что исправляется синхронизацией несущей частоты. Как я могу это смоделировать в Matlab, или хотя бы с чего начать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 4 декабря, 2018 Опубликовано 4 декабря, 2018 · Жалоба Вам нужно понять суть формирования и демодуляции сигналов частотной/фазовой модуляции. dsplib.ru Сформируйте простыми функциями самостоятельно сигнал без всяких встроенных высокоуровневых функций матлаба. Иначе не поймете чего у них там под капотом крутится. Выглядеть будет не особо красиво, но доберетесь до сути. в настоящем случае вам нужна частотная синхра, восстановление несущей (хоть та же петля Костаса). Изучите петлевые фильтры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться