Telegram Group & Telegram Channel
Позавчера в плисочате коллега предложил вычислять синусы с помощью широко известной в узких кругах формулы Марвина Минского, которую он (Минский), по собственному признанию, придумал случайно:

sin = sin + (cos >> shift)
cos = cos - (sin >> shift)

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

На картинках результат теста генератора Минского с разными параметрами: ширина переменной в битах, количество бит сдвига (эпсилон), значение коррекции постоянной составляющей и амплитуда шума дизеринга.

На графике сверху слева круг, построенный по значениям синуса и косинуса (несколько сотен периодов). Красным цветом обозначены значения из генератора, зеленым - референсные значения честных синуса и косинуса такой же разрядности. На графике сверху справа два периода синусоиды - референсная и полученная из генератора. Два графика ниже - спектры комплексных сигналов, полученных как (cos + isin). Зеленый - референсный, красный - из генератора.

В общем, вывод можно сделать следующий. Для рисования кругов метод годный, особенно если разрядность побольше - визуально разница между честным кругом и "нечестным" совсем не заметна. Применять в ЦОС - тут нужно хорошечно подумать. Наверное в чём-то не очень чувствительном к искажениям. Из графиков видно, что постоянную составляющую у меня получилось скомпенсировать, а вот фазовый сдвиг между синусом и косинусом нет (сдвиг проявляется в виде диагонально сплюснутого круга и в виде зеркальной палки на отрицательной части спектра). Даже небольшой имбаланс фаз, в одну выборку длиной, вызывает заметное отражение на спектре. Хотя, и здесь могут быть варианты, например использовать синус и косинус по отдельности.

PS: на уровни не смотрите, ибо окно, fft processing gain и пр.



group-telegram.com/enginegger/33
Create:
Last Update:

Позавчера в плисочате коллега предложил вычислять синусы с помощью широко известной в узких кругах формулы Марвина Минского, которую он (Минский), по собственному признанию, придумал случайно:

sin = sin + (cos >> shift)
cos = cos - (sin >> shift)

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

На картинках результат теста генератора Минского с разными параметрами: ширина переменной в битах, количество бит сдвига (эпсилон), значение коррекции постоянной составляющей и амплитуда шума дизеринга.

На графике сверху слева круг, построенный по значениям синуса и косинуса (несколько сотен периодов). Красным цветом обозначены значения из генератора, зеленым - референсные значения честных синуса и косинуса такой же разрядности. На графике сверху справа два периода синусоиды - референсная и полученная из генератора. Два графика ниже - спектры комплексных сигналов, полученных как (cos + isin). Зеленый - референсный, красный - из генератора.

В общем, вывод можно сделать следующий. Для рисования кругов метод годный, особенно если разрядность побольше - визуально разница между честным кругом и "нечестным" совсем не заметна. Применять в ЦОС - тут нужно хорошечно подумать. Наверное в чём-то не очень чувствительном к искажениям. Из графиков видно, что постоянную составляющую у меня получилось скомпенсировать, а вот фазовый сдвиг между синусом и косинусом нет (сдвиг проявляется в виде диагонально сплюснутого круга и в виде зеркальной палки на отрицательной части спектра). Даже небольшой имбаланс фаз, в одну выборку длиной, вызывает заметное отражение на спектре. Хотя, и здесь могут быть варианты, например использовать синус и косинус по отдельности.

PS: на уровни не смотрите, ибо окно, fft processing gain и пр.

BY Arnold Enginegger











Share with your friend now:
group-telegram.com/enginegger/33

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Right now the digital security needs of Russians and Ukrainians are very different, and they lead to very different caveats about how to mitigate the risks associated with using Telegram. For Ukrainians in Ukraine, whose physical safety is at risk because they are in a war zone, digital security is probably not their highest priority. They may value access to news and communication with their loved ones over making sure that all of their communications are encrypted in such a manner that they are indecipherable to Telegram, its employees, or governments with court orders. In December 2021, Sebi officials had conducted a search and seizure operation at the premises of certain persons carrying out similar manipulative activities through Telegram channels. As the war in Ukraine rages, the messaging app Telegram has emerged as the go-to place for unfiltered live war updates for both Ukrainian refugees and increasingly isolated Russians alike. The next bit isn’t clear, but Durov reportedly claimed that his resignation, dated March 21st, was an April Fools’ prank. TechCrunch implies that it was a matter of principle, but it’s hard to be clear on the wheres, whos and whys. Similarly, on April 17th, the Moscow Times quoted Durov as saying that he quit the company after being pressured to reveal account details about Ukrainians protesting the then-president Viktor Yanukovych. Such instructions could actually endanger people — citizens receive air strike warnings via smartphone alerts.
from fr


Telegram Arnold Enginegger
FROM American