<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://docs.gtlab.pro/index.php?action=history&amp;feed=atom&amp;title=Gtld_getFrequencyResponse</id>
	<title>Gtld getFrequencyResponse - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://docs.gtlab.pro/index.php?action=history&amp;feed=atom&amp;title=Gtld_getFrequencyResponse"/>
	<link rel="alternate" type="text/html" href="http://docs.gtlab.pro/index.php?title=Gtld_getFrequencyResponse&amp;action=history"/>
	<updated>2026-07-26T03:47:23Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://docs.gtlab.pro/index.php?title=Gtld_getFrequencyResponse&amp;diff=1360&amp;oldid=prev</id>
		<title>AlekseyCube: Новая страница: «== Краткое описание == Функция предназначена для расчета частотного отклика. Функция возвращает объект с параметрами частотного отклика (амплитуда, амплитуда в дБ, фаза).   &lt;p style=&quot;color: red&gt;Cодержание функции может дополняться!&lt;/p&gt;  == Синтаксис == Стандартная кон...»</title>
		<link rel="alternate" type="text/html" href="http://docs.gtlab.pro/index.php?title=Gtld_getFrequencyResponse&amp;diff=1360&amp;oldid=prev"/>
		<updated>2026-06-30T06:59:28Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Краткое описание == Функция предназначена для расчета частотного отклика. Функция возвращает объект с параметрами частотного отклика (амплитуда, амплитуда в дБ, фаза).   &amp;lt;p style=&amp;quot;color: red&amp;gt;Cодержание функции может дополняться!&amp;lt;/p&amp;gt;  == Синтаксис == Стандартная кон...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Краткое описание ==&lt;br /&gt;
Функция предназначена для расчета частотного отклика. Функция возвращает объект с параметрами частотного отклика (амплитуда, амплитуда в дБ, фаза).  &lt;br /&gt;
&amp;lt;p style=&amp;quot;color: red&amp;gt;Cодержание функции может дополняться!&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
Стандартная конструкция выглядит таким образом:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: purple&amp;gt;&lt;br /&gt;
let __response = getFrequencyResponse(reX, imX, reY, imY);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Аргументы ==&lt;br /&gt;
:&amp;lt;code style=&amp;quot;color: purple&amp;gt;reX&amp;lt;/code&amp;gt; - действительная часть спектра вибрации;&lt;br /&gt;
:&amp;lt;code style=&amp;quot;color: purple&amp;gt;imX&amp;lt;/code&amp;gt; - мнимая часть спектра вибрации;&lt;br /&gt;
:&amp;lt;code style=&amp;quot;color: purple&amp;gt;reY&amp;lt;/code&amp;gt; - действительная часть спектра силы;&lt;br /&gt;
:&amp;lt;code style=&amp;quot;color: purple&amp;gt;imY&amp;lt;/code&amp;gt; - мнимая часть спектра силы;&lt;br /&gt;
&lt;br /&gt;
== Результат ==&lt;br /&gt;
:&amp;lt;code style=&amp;quot;color: purple&amp;gt;__response.magnitude&amp;lt;/code&amp;gt; - амплитуда частотного отклика;&lt;br /&gt;
:&amp;lt;code style=&amp;quot;color: purple&amp;gt;__response.magnitudeDB&amp;lt;/code&amp;gt; - амплитуда частотного отклика в дБ;&lt;br /&gt;
:&amp;lt;code style=&amp;quot;color: purple&amp;gt;__response.phase&amp;lt;/code&amp;gt; - фазовая часть частотного отклика;&lt;br /&gt;
&lt;br /&gt;
== Содержание функции ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getFrequencyResponse(reX, imX, reY, imY) {&lt;br /&gt;
    const n = reX.length;&lt;br /&gt;
    const magnitude = new Array(n); // амплитуда (линейная)&lt;br /&gt;
    const magnitudeDB = new Array(n); // амплитуда (дБ)&lt;br /&gt;
    let phase = new Array(n); // фаза (радианы)&lt;br /&gt;
    const RAD_TO_DEG = 180 / Math.PI; //перевод радиан в градусы&lt;br /&gt;
&lt;br /&gt;
    for (let i = 0; i &amp;lt; n; i++) {&lt;br /&gt;
        const a = reX[i], b = imX[i]; // X(f) = a + ib&lt;br /&gt;
        const c = reY[i], d = imY[i]; // Y(f) = c + id&lt;br /&gt;
&lt;br /&gt;
        // Знаменатель&lt;br /&gt;
        const denominator = c * c + d * d; // знаменатель исходный вариант&lt;br /&gt;
        // const denominator = a * a + b * b; // знаменатель вариант 2&lt;br /&gt;
&lt;br /&gt;
        // Избегаем деления на ноль&lt;br /&gt;
        if (Math.abs(denominator) &amp;lt; 1e-10) {&lt;br /&gt;
            magnitude[i] = 0;&lt;br /&gt;
            magnitudeDB[i] = -Infinity;&lt;br /&gt;
            phase[i] = 0;&lt;br /&gt;
            continue;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Почастотное умножение&lt;br /&gt;
        const reH = (a * c + b * d) / denominator; // действительная часть&lt;br /&gt;
        const imH = (c * b - a * d) / denominator; // мнимая часть исходный вариант&lt;br /&gt;
        // const imH = (a * d - b * c) / denominator; // мнимая часть вариант 2 (поменял местами вычитаемые)&lt;br /&gt;
&lt;br /&gt;
        // Амплитуда&lt;br /&gt;
        magnitude[i] = Math.sqrt(reH * reH + imH * imH);&lt;br /&gt;
&lt;br /&gt;
        // Амплитуда в дБ&lt;br /&gt;
        magnitudeDB[i] = 20 * Math.log10(magnitude[i] / 1e-6);&lt;br /&gt;
&lt;br /&gt;
        // Приводим фазу сразу к диапазону [0°, 360°]&lt;br /&gt;
        phase[i] = Math.atan2(imH, reH) * RAD_TO_DEG % 360;&lt;br /&gt;
        if (phase[i] &amp;lt; 0) { phase[i] += 360 };&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return { magnitude, magnitudeDB, phase };&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AlekseyCube</name></author>
	</entry>
</feed>