Перейти к содержанию
    

reginil_y

Участник
  • Постов

    38
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о reginil_y

  • Звание
    Участник
    Участник
  1. Есть функция для Матлаба которая называется gethwnd Она возвращает windows handle (WHd) на рисунок - figure. Матлаб определяет этот WHd как double. Нужно с помощю WHd загрузить рисунок в VS с помощю С, С++, или openCV. Можно на прямую а можно и предварительно переконвертировать WHd в pointer.
  2. Всем доброго времени суток, Прежде всего хочу сказать что не знаю, в правильном ли месте размещено сообщение. Так как книга которую ищу относится к обработке сигналов то решил писать сдесь. Собственно название книги и автора следующие: Rolf Isermann, "Fault-Diagnosis Applications: Model-Based Condition Monitoring: Actuators, Drives, Machinery, Plants, Sensors, and Fault-tolerant Systems" Заранее благодарен тем кто сможет помочь. Желательно бы (мне) читать ее на английском
  3. Допплер зависит не просто от скорости приемника и передатчика (к примеру если оба будут двигаться с одинаковой скоростью и в одинаковом направлении то никакого допплера не будет). Допплер появится в том случае если приемник и передатчик будут двигаться относительно друг друга со скоростью отличной от нуля. То есть если радиальное расстояние между ними будет изменяться во времени. В моем примере один (передатчик) стоит на месте а второй (приемник) двигается. По этому относительная скорость (по модулю) в этом случае будет равна скорости приемника. Не обращайте внимания на расстояния. Это обман зрения ) Сейчас попытаюсь объяснить К примеру Vy равен нулю. Тогда мю = Vx*(Pkx-Px)/(c*norm(Pk-P)) Что такое (Pkx-Px)/(norm(Pk-P)) ? Это вы сами можете мне сказать... В любом случае (после того как вы сами себе ответите) видно что мю есть не что инное как проецирование Vx на радиальное направление между приемником и передатчиком с последующим делением на скорость распостранения сигнала в пространстве - в данном примере скорость света. Затем мы умножаем полученный коефициент на несущую и видим то выражение, которое обычно нам показывают когда хотят объяснить что такое Допплер. В случае если Vy не равно нулю - то оно так же будет проецыроваться на вышеупомянутое радиальное направление (Vy*(Pky-Py)/(c*norm(Pk-P))). Честно говоря я не понял что сигма это допплер. Я подумал что сигма это дисперсия шума.
  4. Здравствуйте Ivan55, Решил я и свои пять копеек вставить в дискуссию ) По поводу Допплера: Если сигнал узкополосный то все элементы его спектра перетерпят оду и ту же сдвижку (из за Допплера). Для того чтоб определить эту сдвижку, нужно несущую частоту умножить на коэфициент. Назовем его "мю" мю= V(T)*[Pk-P]/(c*norm([Pk-P])) V=[Vx;Vy] скорость приемника (к примеру). Pk = [Pkx;Pky] коорденаты передатчика (их может быть несколько) P=[Px;Py] коорденаты приемника в момент приема сигнала c - скорость сигнала (допустим равен скорости света) norm это из Матлаба ) Но если сигнал широкополосный то каждый елемент его спектра перетерпит разные сдвижки. Поэтому каждый елемент спектра должен быть умножен на соответствующий коэфициент. Какой ? Честно говоря незнаю ) Надеюсь что предложеныый он правильный. Передискретизацию можно делать не только во временной области но и сразу в частотной. (DFT) По поводу сигмы .... мне кажется ее нужно выбирать в зависимости от того SNR в котором вы желаете проверить результаты. То есть SNR вы задаете, сила сигнала у вас есть, следовательно можете посчитать силу шума (сигма)
  5. Как? Да на прямую. По поводу "мнимой нулевой" части Я и так знаю что мне нужно делать. Судя по Вами вышесказанному математику я знаю не хуже Вас. Читать книжки это полезно... но лучше "иногда" соображать самому. Мы немного начинаем уходить от темы. Давайте другим тоже дадим высказаться (по моему вопросу который я задал в самом начале)
  6. A fundamental property of the autocorrelation is symmetry, R(i) = R(-i), which is easy to prove from the definition. In the continuous case, the autocorrelation is an even function R_f(-tau) = R_f(au), when f is a real function and the autocorrelation is a Hermitian function R_f(-tau) = R_f^*(tau), when f is a complex function. Это выдержка из Вики (ссылки которую я вам давал) 1)Где тут написано что мнимая часть априори равна нулю? 2)Зачем применять conj к выражению у которого мнимая часть априори равна нулю (тоесть к действительному выражению)?
  7. Так я же ссылку Вам показывал.... Там же написано было что АКФ комплексного сигнала комплексная
  8. Предлагаю решать по одному вопросу. Первым делом разберемся с АКФ комплексного сигнала. Я просто нехочу повторятся. Поэтому если не тяжело дайте ссылку на книгу и только подскажите в какой главе главе говориться про автокореляцию комплексного сигнала. Я всего навсего хочу убедится что она действительна. Хотя ссылки на книгу уже будет достаточно. Более того... сдесь http://en.wikipedia.org/wiki/Autocorrelation под заголовком Properties Вы обнаружите что она комплексная. Как я уже говорил поначалу я это доказал сам исходя из определения АКФ
  9. Если не тяжело - докажите или хотя бы дайте ссылку. Я ведь обосновал почему я думаю что она коплексная а вы просто написали одно слово. Зависит от "Докажите или дайте ссилку"... Ассиметричный если сигнал действительный (да еще и комплексный). А есле сигнал еще и комлексный то какой спектр должен быть? А какой должен быть? Я всего навсего изменил количество символов Мне кажется что тут надо подумать.Ведь я по большому счету нигде не указал что мой сигнал "живет" на частоте 2.5кГц. Единственное что (судя из моего кода и результатов отклика Матлаба) я указал четко так это частоту дискретизации. По этому с вашего позволения я над этим подумаю Зачем мне оценка PSD если у меня есть настоящий?
  10. Только в нуле. Оно и понятно - в нуле мы получаем power. Более того... для того чтоб доказать что АКФ для недействительного сигнала недействилелна, нужно просто убедится что conj(Rxx[k]) not= Rxx[k]. Взяв за основу определение АКФ для комплексных сигналов, в этом убедиться не сложно. Лично я пошел дальше и для себя доказал что conj(Rxx[-k]) = Rxx[k]. Уверенн что это было доказано уже миллион раз но мне быстрее было доказать самому нежели искать в итернете или книжках. В общем последняя строчка (которую я написл выше) мне совсем не понравилась... особенно для ДПФ... В плане оценки частот - да. Но не в плане АКФ и ДПФ от АКФ нет Так в том то и дело что в свое время перерешал таких задач много и все на бумаге. А вот теперь пошла практика. Все мы прекрасно знаем разницу меду обеими (: Вы имеете в виду мое умножение на экспоненту? Честно говоря я тут тоже сомневаюсь. Ведь умножение на эксп. это всеравно что умножить на син. и кос. (по Ойлеру) Тоесть я поменял "природу" самого сигнала...верно... может вместо умножения на експ. нужно сделать что то со временем. Типа scaling ? То что вы предлагаете это называется Bartlett method http://en.wikipedia.org/wiki/Bartlett%27s_method В виду того что я взял много выборок мне уже не нужно оценивать PSD. Она у меня уже явно детерминированная (судя по стабильности рузультатов). Возьмите количество символов 75 и тогда будут видны (совсем небольшие) изменения.
  11. Я сомневаюсь, так как огибающая комплексная может быть да... мне немного нехватает теории... это тоже одна из причин по которой я разместил вопрос По большому счету да. Но при моих условиях они совпадают (почти). для большей наглядности я взял Nsym=2000. Тоесть количество выборок равно 8000. Ниже я размещу код который убедит вас в том что несмотря на случайность процесса результаты "оценки" частот абсолютно стабильны! Он так же вас убедит в том что формирующий фильтр ничего не меняет. Правда осталось пару детерминированных вопросов. Вот код: close all clear all clc resf=2^15; Nsym = 2000; Fd = 2.5e3; % modulation frequency Fs = 10e3; % sampling frequency coefs = rcosine(Fd,Fs,'fir/sqrt'); msg = [randint(1, Nsym, 3)]; % creating the massage from 75 symbols t = (0 : 1/Fs : 1/Fd*Nsym-1/Fs); % descrete time s_qpsk = pskmod(msg, 4,pi/4); % the modulation signal s_psk_300 = s_qpsk(floor(Fd*t)+1); % lifting up the descrite time [Pxx_without_f,w_without_f] = periodogram(s_psk_300,[],resf); figure(1) plot(w_without_f,Pxx_without_f) title('Periodogram (Matlab functioin) before filter ') [max1m ind1m] = max(Pxx_without_f); ind1m=ind1m-1; if ind1m<w_without_f/2 fecm = (ind1m/(resf/Fs)); else fecm = (-(resf-ind1m)/(resf/Fs)); end figure(2) plot(real(s_psk_300),'.-r') hold on plot(imag(s_psk_300),'.-b') title('The Signal before Filter') axis([-2 100 -2 2]) msg_filt = filter(coefs,1,s_psk_300); [Pxx_with_f,w_with_f] = periodogram(msg_filt,[],resf); figure(3) plot(w_with_f,Pxx_with_f) title('Periodogram (Matlab functioin) after filter ') [max1a ind1a] = max(Pxx_with_f); ind1a=ind1a-1; if ind1a<w_with_f/2 feca = (ind1a/(resf/Fs)); else feca = (-(resf-ind1a)/(resf/Fs)); end carrier = exp(-2i*pi*2.5e3*t); y=msg_filt.*carrier; [Pxx_after_shift,w_after_shift] = periodogram(y,[],resf); figure(4) plot(w_after_shift,Pxx_after_shift) title('Periodogram (Matlab functioin) after shift ') [max1s ind1s] = max(Pxx_after_shift); ind1s=ind1s-1; if ind1s<w_after_shift/2 fecs = (ind1s/(resf/Fs)); else fecs = (-(resf-ind1s)/(resf/Fs)); end figure(5) plot(real(msg_filt),'.-r') hold on plot(imag(msg_filt),'.-b') title('Output of the shapinfg filter') axis([-2 100 -5 5]) figure(4) plot(real(y),'.-r') hold on plot(imag(y),'.-b') title('y After shift to 2.5e3Hz') axis([-2 100 -5 5]) %Creating PSD for original signal fftr = abs(fft(s_psk_300,resf)/sqrt(resf)).^2; figure plot(0:1/resf:1-1/resf,fftr) %axis([-0.1 1.1 -0.1 14]) title('FFT of msg-filt') [max1 ind1] = max(fftr); ind1=ind1-1; if ind1<resf/2 fec = (ind1/(resf/Fs)); else fec = (-(resf-ind1)/(resf/Fs)); end %Creating PSD for the signal after filtering fftr1 = abs(fft(msg_filt,resf)/sqrt(resf)).^2; [max11 ind11] = max(fftr1); ind11=ind11-1; if ind11<resf/2 fec1 = (ind11/(resf/Fs)); else fec1 = (-(resf-ind11)/(resf/Fs)); end %Creating PSD for the signal after filtering fftr2 = abs(fft(y,resf)/sqrt(resf)).^2; [max12 ind12] = max(fftr2); ind12=ind12-1; if ind12<resf/2 fec2 = (ind12/(resf/Fs)); else fec2 = (-(resf-ind12)/(resf/Fs)); end disp([' Estimation frec. before filt. = ' num2str(fecm) ' Estimation frec. after filt. = ' num2str(feca) ' Estimation frec. after shift = ' num2str(fecs)]) disp([' Estimation frec. before filt.(my func.) = ' num2str(fec)]) disp([' Estimation frec. after filt.(my func.) = ' num2str(fec1)]) disp([' Estimation frec. after shit(my func.) = ' num2str(fec2)]) вот (стабильный) отклик матлаба на него Estimation frec. before filt. = -10000 Estimation frec. after filt. = -10000 Estimation frec. after shift = -2500 Estimation frec. before filt.(my func.) = 0 Estimation frec. after filt.(my func.) = 0 Estimation frec. after shit(my func.) = -2500 теперь вместо carrier = exp(-2i*pi*2.5e3*t); делаем carrier = exp(2i*pi*2.5e3*t); получаем немного другой но тоже стабильный отклик Estimation frec. before filt. = -10000 Estimation frec. after filt. = -10000 Estimation frec. after shift = -7500 Estimation frec. before filt.(my func.) = 0 Estimation frec. after filt.(my func.) = 0 Estimation frec. after shit(my func.) = 2500 То есть я каждый раз вычисляю при какой частоте получу макс. значение периодограммы и abs(fft(.)/N)^2... то что я назвал my func. Прежде всего видно что формирующий фильтр ни на что не повлиял как в периодограмме так и в my func. (уже хорошо) первый вопрос (главный) который возникает сам собой - почему макс. значение периодограммы в -10 кГц ..... (и вообще - что такое -10 кГц) а в my func. в нуле (может это одно и тоже?) Ну а второй вопрос по поводу сдвижки спектра В случае с периодограммой: при максимуме в точке -10кГц и при сдвижке спектра на -2.5кГц получаю максимум в -2500Гц. то есть вроде как действительно -10кГц это как 0Гц. А при сдвижке спектра на 2.5кГц получаю максимум в -7500Гц. что более логично чем в первом случае. При работе с my func. все как то более понятно (вопрос правиль но ли?) в обеих случаях максимум имел место в нуле. полсле сдвижки на -2.5кГц он переместился именно на эту величину а при сдвижке на 2.5кГц тоже переместился на соответствующую величину. Вот такие пироги
  12. Поработал я с "Periodogram". Или же максимум в точке -10kHz или же в частоте совпадающей с частотой функции fftr (которую я написал). АКФ делать не стал по двум причинам. 1-ая: тажело будет глядя на функцию во временной области понять на глаз что с ней произойдет в частотной области и почему пик не выскочит в 2.5 кило герц. ну а вторая причина это то что СПМ это и есть периодограмма. Если хотите могу разместить код
×
×
  • Создать...