Скрипт предназначен для максимально простого построения графиков для курсовой работы, при минимальных знаниях программирования и минимальных временных затратах. Работает в программах Octave и Matlab
Присвойте переменной t1
значение из задания.
t1 = 2 / 1000; % t1 из задания
Измените расчетную формулу импульса переменной tPulese
.
tPulse = 2 * t1; % Длительность импульса (тау импульса)
Добавьте формулу расчета вашего сигнала в функцию signalGeneralForm
для n=0.
% Формула для вычисления сигнала
function r = signalGeneralForm(t, tPulse, varargin)
%...
if n == 0
%Формула требуется для подсчета всех пунктов
r = (1 - (2 * t / tPulse)^2) * rect(t / tPulse); % заданный сигнал математически в общем виде s(t)
else
%...
end
end
Если требуется построить график первой производной сигнала, то добавьте её в функцию firstDerivative
и присвойте
переменной isPlotFirstDerivative
значение true
.
Если не требуется строить график первой производной сигнала, то присвойте переменной isPlotFirstDerivative
значение false
.
% Формула первой производной заданного сигнала
function r = firstDerivative(t, tPulse)
%Формула требуется для подсчета пунктов 1
r = -8 * t / tPulse^2 * rect(t / tPulse) * 10^-3;
end
Если требуется построить график второй производной сигнала, то добавьте её в функцию secondDerivative
и присвойте переменной isPlotSecondDerivative
значение true
.
Если не требуется строить график первой производной сигнала, то присвойте переменной isPlotSecondDerivative
значение false
.
% Формула второй производной заданного сигнала
function r = secondDerivative(t, tPulse)
%Формула требуется для подсчета пунктов 1
r = (-8 / tPulse^2 * rect(t / tPulse)) * 10^-6;
end
Добавьте формулу расчета спектра вашего сигнала в функцию spectralDensityOfSignal
.
% Формула спектральной плотности заданного сигнала
function r = spectralDensityOfSignal(w, tPulse)
%Формула требуется для подсчета пунктов 1, 2, 3, 4
if w == 0
r = 2 * tPulse / 3;
else
r = 8 / (w^2 * tPulse) * (sinc(w * tPulse / 2) - cos(w * tPulse / 2));
end
end
Первый пункт готов.
После запуска скрипта в консоль выведется сообщение:
Автоматическое вычисление ширины спектра может работать неверно особенно для кодированного сигнала.
Автоматически вычисленная ширина спектра: x.xx рад/мс
Если автоматически вычисленное значение ширины спектра не верно, то его можно исправить. Присвойте значение true
переменной isSpectrumWidthWasDeterminedIncorrectly
, а dw
внутри if
правильное значение.
Если автоматически вычисленное значение ширины спектра верно, то присвойте значение false
переменной isSpectrumWidthWasDeterminedIncorrectly
,
isSpectrumWidthWasDeterminedIncorrectly = true; % Заменит автоматически определенную ширину спектра?
if isSpectrumWidthWasDeterminedIncorrectly
dw = 8; % Ширина спектра
end
Добавьте формулу расчета вашего периодического сигнала в функцию signalGeneralForm
для различных n.
% Формула для вычисления сигнала
function r = signalGeneralForm(t, tPulse, varargin)
%...
if n == 0
%...
else
%Формула требуется для подсчета пунктов 2 и 4
r = (1 - (2 * (t - n * T) / tPulse)^2) * rect((t - n * T) / tPulse); % заданный периодический сигнал математически в общем виде s(t)
end
end
Второй, третий и четвертый пункт готовы.
Добавьте формулу АКФ в функцию rFormula
% Формула АКФ
function r = rFormula(t, tPulse)
%Формула требуется для подсчета пункта 5
r = 8 * tPulse / 15 * (1 - 5 * (t / tPulse)^2 + 5 * (abs(t) / tPulse)^3 - (abs(t) / tPulse)^5) * rect(t / (2 * tPulse));
end
Пятый пункт готов.
Измените расчетную формулу импульса переменной tau
по данным из задания.
tau = 10 * t1; % тау в цепи
Присвойте переменной H0
значение рассчитанное в курсовой работе.
H0 = 0.5;
Присвойте переменной Hinf
значение рассчитанное в курсовой работе.
Hinf = 0;
Присвойте переменной distToLeftAndRightBoundaries
формулу из курсовой или собственное значение для границ графика.
distToLeftAndRightBoundaries = 0.5;
Присвойте переменной distToRightBoundary
формулу из курсовой или собственное значение для правой границы графика.
distToRightBoundary = 5 * tau * 1000;
Присвойте переменной distToRightBoundary
формулу из курсовой или собственное значение для правой границы графика.
distToRightBoundary = (tPulse + 5 * tau) * 1000;
Измените формулу после y(1, i) =
для вашего Uвх.
y(1, i) = -8 * s2Formula(t) / tPulse^2 + 4 * s1Formula(t) / tPulse + 8 * s2Formula(t - tPulse) / tPulse^2 + 4 * s1Formula(t - tPulse) / tPulse;
Измените формулу после y(2, i) =
для вашего Uвых.
y(2, i) = -8 * g2Formula(t, tau) / tPulse^2 + 4 * g1Formula(t, tau, Hinf, H0) / tPulse + 8 * g2Formula(t - tPulse, tau) / tPulse^2 + 4 * g1Formula(t - tPulse, tau, Hinf, H0) / tPulse;
Правка -> Параметры -> Редактор -> Кодировка по умолчанию -> UTF-8
Edit -> Preferences -> Editor -> Text encoding used for loading and saving -> UTF-8