Jump to content

    

mihalevski

Участник
  • Content Count

    98
  • Joined

  • Last visited

Community Reputation

0 Обычный

About mihalevski

  • Rank
    Частый гость

Информация

  • Город
    Array
  1. Если Вы реализовали частотный детектор, используя линейную интерполяцию f(t)=FD(t), где t - непрерывное время, а f(t) соответствующая этому времени мгновенная частота в спектре сигнала то попробуйте вычислить f(t) так f(t) = ( FD( t ) + FD( t + 0.5 ) ) / 2. В формуле число 0.5 "создает" сдвиг на половину такта перед линейным интерполятором. Вроде полный бред да еще количество вычислений увеличивает в 2 раза но у меня результат стал приемлемым и все пошло в работу.
  2. Кто может объяснить или дать ссылку на доступно изложенный материял. Программа на Си должна иметь три типа функций. 1. F1( ) – выделение динамической памяти при помощи функции malloc(). При этом участки динамической памяти образуют связанный список, где один участок указывает местонахождение следующего участка. 2. F2( ) – функции использующие указанный список для хранения данных. 3. F3( ) – освобождение произвольных участков динамической памяти связанного списка при помощи функции free(). Реализация F1() и F2() в общем понятна. Однако реализация F3() вызывает затруднение, поскольку применяемая здесь функция free(p) должна использовать тот же указатель, что был использован в функции F1(): p = malloc() и который уничтожен при выходе их F1(). Вопрос 1. Можно ли сохранять указатели p в самом списке. 2. Как проверить в отладчике, что функция F3() (free(p)) сработала корректно.
  3. Функция из работающей программы писал для DSP правда на Сях далее сами разберетесь и переведете на asm: //Генератор гармонического колебания с рекуррентным вычислением //Возвращает значение функции cos + i * sin при каждом вызове функции //Fs - частота генерируемого колебания, Гц //Fd - частота дискретизации, Гц //phase - начальная фаза в градусах //order - изменение этого параметра используется для сброса накапливающихся //ошибок и устанавливает процесс генерации в исходное состояние с заданной фазой //Параметр order не должен быть равным нулю //Значения Fs и Fd активируются только одновременно с изменением параметра order //Параметр order может меняться в любой момент complex_long_double generator_sin_cos(long double Fs, long double Fd, long double phase, int order) { static long double a, b, sin, cos; static int i = 0; long double c_1, s_1, pi2, radian; complex_long_double rez; if(i != order)//инициализация { pi2 = 6.28318530717; radian = 57.29577951308; a = cosd( pi2 * Fs / Fd ); b = sind( pi2 * Fs / Fd ); sin = sind( phase / radian ); cos = cosd( phase / radian ); i = order; } c_1 = cos; s_1 = sin; cos = a * c_1 - b * s_1;// cos и sin есть отсчеты взаимно ортогональных колебаний sin = a * s_1 + b * c_1; rez.re = cos; rez.im = sin; return rez; }// end generator_sin_cos()
  4. Ну и что наиболее впечатлило в немецком устройстве? Чем он отличается от российских аналогов. Точность определения местонахождения источника сигнала на местности, определение технических параметров сигнала, количество обрабатываемых сигналов с пересекающимеся спектрами и т. д. Сравнивал немецкую электронику Сименс и японскую Панасоник на примере телефонных станций японцы впереди даже по конструктивному исполнению. Тот же результат при сравнении крупных станций Сименс и Эрикссон.
  5. Чего то я расстерялся глядя на схему. Зачем тут источник тока если вы его шунтировали резистором ?.
  6. Пеленгатор это товар а генератор средство производства. Зарабатывать надо на продаже товара.
  7. А если взять 4 генератора типа Роде-Шварц засинхронизировать их через специальный вход и вперед.
  8. Это DSP и арифметика у него аппаратная. Платформу TS201 выбирали другие специалисты и кстати не прогадали если учесть что в следующем году Миландер по программе импортозамещения выпускает процессор 1967ВЦ2Т и обещает обратную совместимость с ADSP-TS201 как по исполняемому кода, так и по работе со средой разработки VisualDSP, Минимальное изменение системной платы при миграции с TS201 на 1967ВЦ2Т. Использовался Си компилятор поставляемый со средой VisualDSP и он соответсвует стандартну. Со средой разработки поставляется библиотека Синапс для работы с комплексными числами complex_long_double и complex_float, матрицами, БПФ, цифровые фильтры и множество разных функций. Но нужно вниметельно смотреть на версию среды разработки так как несмотря на то что названия функций в зависимости от арифметики оканчиваются либо на f или d в старых версиях это всегда f.
  9. Все удалось но только ж...пу отсидел. И еще выполнение операций в фомате float не позволяло пеленговать сигналы приходящие с малым угловым разрешением. И только переход на long double дал результат.
  10. Спасибо за советы. Я так понял что процесс A_{i+1} = A_i * A_i / ||A||_2^2, где ||A_i||_2^2 - сумма квадратов всех матричных элементов должен быть многократно повторен чем больше повторений тем точнее результат как и при QR алгоритме. Здесь учитывается что матрица комплексная? Потому что алгоритм Грама-Шмидта в QR алгоритме отказался работать с комплексными числами. Здесь пришлось комплексную матрицу преобразовать в матрицу действительных чисел но уже в два раза большего размера и по завершении QR алгоритма результат преобразовать в комплексную матрицу. Насчет сравнительной эффективности этих методов вот в чем вопрос. Спасибо за советы. Я так понял что процесс A_{i+1} = A_i * A_i / ||A||_2^2, где ||A_i||_2^2 - сумма квадратов всех матричных элементов должен быть многократно повторен чем больше повторений тем точнее результат как и при QR алгоритме. Здесь учитывается что матрица комплексная? Потому что алгоритм Грама-Шмидта в QR алгоритме отказался работать с комплексными числами. Здесь пришлось комплексную матрицу преобразовать в матрицу действительных чисел но уже в два раза большего размера и по завершении QR алгоритма результат преобразовать в комплексную матрицу. Насчет сравнительной эффективности этих методов вот в чем вопрос.
  11. Это корреляционная матрица, симметричная, обращаемая, с комплексными значениями. Математическое моделирование показало, что QR алгоритм работает, правда сходится медленно. На Си написать можно, но если уже имеется готовое решение на Си то лучше им и воспользоваться, а не изобретать велосипед. Если вы в теме то не могли бы дать ссылки на Lapack в сорсах, f2c. метод Арнольди и пояснить как это скачать.
  12. Оказывается (и это не описано во многих источниках по QR алгоритму), что собственные вектора можно определить в процессе выполнения QR алгоритма если каждай раз умножать образующиеся матрицы Q. Столбцы такой матрицы будут стремиться к точным значениям собственных векторов. Т . е . QR алгоритм позволяет определить как собственные значения так и собственные вектора матрицы. Проверку провел для матрицы действительных значений - работает. Теперь надо проверить для комплексных. О скорости вычисления пока не думал надеюсь на небольшой размер матрицы.