Разработка и тестирование программного обеспечения функционального проектирования нелинейных систем с учетом комбинационных помех заданного порядка

Сравнение методик расчета и анализа частотного распределения. Синтез номограммы комбинационных частот с использованием рядов Фарея. Программная реализация алгоритмов оптимизации распределения преобразователя частоты с перестраиваемым преселектором.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.04.2017
Размер файла 3,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

 // Добавляем линии в коллекцию линий HashSet:

if (LinePlus!= null)

allCombFreqLines. Add(LinePlus);

if (LineMinus!= null)

allCombFreqLines. Add(LineMinus);

}

}

}

}

 // Определяет, является ли переданная точка пораженной. Ищет линию(и) с определенным знаком производной в заданной области частот (суммирование или вычитание). Если проходит хотя бы одна линия => это пораженная точка. Возвращает объект SimpleLine в случае успеха и null если не удалось найти линию.

 // Warning! Функция поиска вcех линий проходящих через одну точку пока не реализована.

private SimpleLine CheckingOnePoint (Fraction fr, int FSIndex, ref int numb_lines, Sign sign, AreaType areaType)

{

 // Принимает в качестве аргументов:

 // - пораженную точку

 // - индекс ряда Фарея

 // - ссылку на переменную с общем числом линий, проходящих через данную точку

 // - объект тип смесителя

 // - знак производной (+ или -) для линии

 // - тип области номограммы, с которой мы сейчас работаем (суммирование (верх) / вычитание (низ) частот)

 // Уравнение вида y = m*x + n

int m = 0;

int n = 0;

 // Вычисление m и n:

 // 1) Учет знака производной

sbyte m_сoeff = 0;

sbyte n_сoeff = 0;

if (sign == Sign. Plus)

{

m_сoeff = 1;

n_сoeff = -1;

}

else if (sign == Sign. Minus)

{

m_сoeff = -1;

n_сoeff = 1;

}

 // 2) Учитываем с какой областью диаграммы работаем (суммирование (верх) / вычитание (низ) частот):

sbyte NSignal_koeff = 0;

sbyte NGeterodin_koeff = 0;

if (areaType == AreaType. SumFreq)

{

NSignal_koeff = 1;

NGeterodin_koeff = 1;

}

else if (areaType == AreaType. SubFreq)

{

NSignal_koeff = -1;

NGeterodin_koeff = 1;

}

bool Accept = false; // Подходит или нет данная пораженная точка

 // Находим комбинационные частоты, проходящие через данную пораженную точку…

for (int k = 1; k <= FSIndex / fr.Q; k++)

{

m = m_сoeff * k * fr.Q + NSignal_koeff * NSignal;

n = n_сoeff * k * fr.R + NGeterodin_koeff * NGeterodin;

if (Math. Abs(m) + Math. Abs(n) < Kp)

{

 // Строка 140 и ниже, оригинальный алгоритм (NomogrammaFarey.bas)

switch (TC)

{

case ConverterType.TCSimple:

Accept = true;

break;

case ConverterType.TCBalanceF1: // Сигнал

if (m == 0 || Math. Abs(m)% 2 > 0) // 0q+0 всегда будет рисоваться

Accept = true;

break;

case ConverterType.TCBalanceF2: // Гетеродин

if (n == 0 || Math. Abs(n)% 2 > 0) // 0q+0 всегда будет рисоваться

Accept = true;

break;

case (ConverterType.TCBalanceF1F2):

if ((m == 0 && n == 0) || ((Math. Abs(m)% 2 > 0) && (Math. Abs(n)% 2 > 0))) // 0q+0 всегда будет рисоваться

Accept = true;

break;

}

 // Как только находим комб. частоту удовлетворяющую условиям,

 // возвращаем объект прямой и выходим из цикла:

if (Accept == true)

{

numb_lines++;

return new SimpleLine (m, n);

}

}

}

 // Если ничего не нашли:

numb_lines = 0;

return null;

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.