2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Оптимальный разреженный ранг-ревеалинг на FPGA
Сообщение11.05.2022, 11:24 
Добрый день,

Имеется несколько $N$ ($N=5-8$) сигналов $f_{n,k}(t+d_k)$, $n=1,\dots, N$, $k=1,\dots,K$, которые у меня повторяются несколько $K$ раз. $N$ - фиксировано, $K$ - надо взять минимальным.

Когда сигнал во времени повторяется, я не могу очень точно гарантировать начальное время сдвига ($d_k$), хотя сигнал по идее во времени должен быть точно таким же, как и был с точностью до слабо меняющейся константы $\alpha_{k_1,k_2}$:

$f_{n,k_1}(t) = \alpha_{k_1,k_2} f{n,k_2}(t)$


Каждый сигнал $f_{n,k}(t+d_k)$ я могу передать в канал для оцифровки, или передать в канал для оцифровки дифференциальную разницу между двумя сигналами $f_{n_1,k}(t+d_k) - f_{n_2,k}(t-d_k)$.

Одновременно я могу оцифровывать мало каналов, обычно от $2$ до $6$ (всегда четное), это число зависит от скорости семплирования, так, что с каждого канала получается $M$ чисел ($M=1024-4096$, не во всех задачах - степень двойки).

$d_k$ соотносится к скорости оцифровки так, что $d_k$ может составлять до нескольких шагов оцифровки, и, к сожалению, не является точно целым числом.

Еще один очень важный момент.

Все сигналы очень похожи друг на друга с точностью до нормировки, собственно поэтому я заморачиваюсь с их разницей $f_{n_1,1}(t) - f_{n_2,1}(t)$.

Нормы сигналов отличаются на плюс-минус проценты, то есть иногда разница дает очень большое преимущество, а иногда почти нивелирована тем, что нормы сигналов уже были сильно отличными.

Мне нужно получить максимально точно оцифрованные $f_{n,1}(t)$, так, чтобы для них же их разница ($f_{n_1,1}(t) - f_{n_2,1}(t)$) тоже была максимально точная.
Также желательно получить коэффициенты $\alpha_{1,k}$.

Возможно правильнее даже сказать, что я хочу получить один нормированный сигнал $f_{1,1}(t)$, и набор нормированных разниц ($f_{1,1}(t) - f_{n_2,1}(t)$).

Из неприятного, у меня очень мало памяти. Если один оцифрованный сигнал занимает примерно $M$ ячеек памяти, то у меня имеется примерно $3MN + 3KN$ свободных ячеек памяти для промежуточных вычислений, и эти вычисления хочется реализовать на FPGA.

Меня также устроит, если я получу один сигнал $f_{1,1}(t)$, "оптимальную" линейную комбинацию из $f_{1,1}(t) - f_{n_2,1}(t)$ (пусть даже большего размера, чем $n$), получу линейную комбинацию из $\alpha_{1,k}$, а уже "досжатие" проведу далее на обычном процессоре, но у меня не хватит пропускной способности процессора стащить все оцифрованные данные на процессор и сделать там аналог сингулярного разложения, да и надо "на лету" выбрать оптимальные комбинации тех сигналов, которые надо оцифровывать.

Мой вариант решения:

(не честный)
Если я бы мог оцифровывать все сигналы и все возможные их пары, я бы каждый раз делал такую оцифровку, потом бы считал бы QR, с оптимизацией по рангу, и оставлял бы только малый ранг.

Недостаток - без полного SVD оптимизация по рангу будет кривой, а SVD на FPGA не сделать, то есть надо пользовать какие-то методы адаптивной кросс-аппроксимации.

Между наборами сигналов - без пробного подбора $d_k$ не обойтись, и это тоже съест уйму вычислительных ресурсов.

Совершенно не понимаю какую стратегию выбрать, для оптимального выбора пар дифференциальных сигналов и самих сигналов во время оцифровки - ведь если у меня 8 сигналов, то всего я могу иметь до $8 + 8 (8-1)/2 = 36$ каналов, а у меня есть возможность оцифровать только $2-6$ каналов и у меня стоит важный вопрос как оптимально выбрать эти каналы?

Пожалуйста, прокомментируйте-посоветуйте по
1. стратегии выбора какой канал или какую дифференциальную пару выбрать,
2. стратегии сжатия этих данных, для получения оптимальных данных.

Спасибо!

 
 
 
 Re: Оптимальный разреженный ранг-ревеалинг на FPGA
Сообщение11.05.2022, 18:13 
ilghiz в сообщении #1554374 писал(а):
Нормы сигналов отличаются на плюс-минус проценты, то есть иногда разница дает очень большое преимущество, а иногда почти нивелирована тем, что нормы сигналов уже были сильно отличными.

А если нормировать сигналы перед оцифровкой, а норму обрабатывать отдельно ?

 
 
 
 Re: Оптимальный разреженный ранг-ревеалинг на FPGA
Сообщение11.05.2022, 18:49 
ASP в сообщении #1554397 писал(а):
ilghiz в сообщении #1554374 писал(а):
Нормы сигналов отличаются на плюс-минус проценты, то есть иногда разница дает очень большое преимущество, а иногда почти нивелирована тем, что нормы сигналов уже были сильно отличными.

А если нормировать сигналы перед оцифровкой, а норму обрабатывать отдельно ?

Спасибо за комментарий!

Я дифференциальную составляющую в аналоге собирался делать. То есть выбранная пара сигналов будут коммутироваться на вход дифференциального усилителя с разумным коэффициентом усиления (раз так 10-20), и его выход далее будет оцифровываться.

Сами сигналы без дифференциальной составляющей у меня пробно уже оцифрованы. Если их отнормировать и сравнивать, то по $l_2$ норме сами сигналы больше их дифференциальной составляющей примерно в 200-1000 раз. Это довольно много, так как я сейчас ставлю 16 битный оцифровщик, а сам сигнал почти всегда имеет нули в верхних 5-6 битах, то есть разница получается на уровне последних 2-3 битов.

Построить систему с кучей дифф каналов и взять взять эти данные как есть не могу - не хватает пропускной способности, а прикрутить туда очень толстую плиску с быстрой и огромной внутренней памятью пока тоже не могу, и очень бы не хотел бы даже для тестов.

 
 
 
 Posted automatically
Сообщение11.05.2022, 18:59 
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Computer Science»
Причина переноса: пожалуй, все-таки по тематике это ближе сюда.

 
 
 
 Re: Оптимальный разреженный ранг-ревеалинг на FPGA
Сообщение12.05.2022, 00:59 
Спасибо Pphantom за внимание к моему вопросу!

Я правда думаю, что наиболее подходящей темой была бы "Численные и вычислительные методы, оптимизация", а не Computer Science, ведь ключевым тут являются математические методы, а именно

    построение QR в малой памяти с повышенной точностью либо ко всем кроме самого яркого сингулярного значения, либо к разностям между исходными векторами, а также
    методы такого построения с недоопределенными и переопределенными данными.

Про FPGA - я написал только потому, чтобы не обсуждать много раз почему 50К чисел уже могут не поместиться в памяти - это дико для современных компьютеров - но является обычным явлением при использовании FPGA.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group