ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
711017 Топик полностью
Ксения (06.11.2016 05:44 - 05:52, просмотров: 360) ответил Николай Коровин на Дак вот второе как-то ближе к истине ИМХО -- брать просто каждый раз интервал с небольшим запасом, чтобы сигнал не потерять, и приводить к одной длине. Тогда и максимальная частота будет примерно одинаковая. UPD
Если базисы ортогональны, да еще и масштабированные под единичную норму (а это делается всегда заранее), то никого МНК тут и в помине нет - попросту вектор данных перемножается с каждым из базисов, а полученные скалярные произведения как раз и будут искомыми коэффициентами - весовыми вкладами каждого из базисов в синтетический сигнал. Т.е. в расчетном плане все это механическое перемножение на матрицу и больше ничего нет. Главное, чтобы базисы были ортогональными, тогда и думать ни о чем не надо. Кстати это та самая причина, по которой я умножение векторов на ассемблере писала с использованием AVX2 и мечтала об AVX3 :). Потеря точности происходит по одной единственной причине - той, что я силой воли ограничиваю число базисов, отказываясь от дани базисов высших степеней. Здесь расчет тот же, что и при Фурье-фильтрации - пренебрежение высокочастотными составляющими, поскольку ясно, что полезный сигнал широк и гладок, а морщины на нем от шума. Да и на чисто практических случаях видно, что весовые вклады с ростом степени полинома убывают. Вот потому-то и экономят за счет высших базисов, а не нижних. Полиномы ведь все, как один, - степенные многочлены. А потому и с ростом степени, у этих многочленов растет число корней (т.е. точек, где они пересекают нулевую линию), а тому и становятся всё более извилистыми. При самых высоких степенях все они становятся мало отличимыми от высокочастотной синусоиды/гармоники. Поэтому потери точность возможно сразу проверить, если после получения коэффициентов разложения тут же сгенерировать по ним синтетический сигнал и посчитать невязку. Но можно и сэкономить на вычислениях, обрезав высшие базисы с того места, где вклад падает, скажем ниже 1%. На это можно решиться, зная, что базисы у тебя нормированные на единицу, а потому и величина коэффициента объективно отражает размер вклада. Поэтому в принципе можно накапливать сумму абсолютных величин вычисляемых коэффициентов и бросать их вычислять, когда очередной коэффициент оказывается мал, хотя это стрёмно :). Т.е. лучше все-таки не рисковать (т.к. нулевой коэффициент может получиться случайно), а после вычисления очередного коэффициента тут же добавлять его вклад в синтетический образ и проверять его невязку с оригиналом. А еще лучше экспериментально проверить, скольку базисов обычно нужно для сигнала данной формы и это значение зафиксировать, а невязка какая уж получится - лишняя точность не помешает, тогда как проверки на каждом шагу обойдутся дороже.