- •А.К. Ефремов интегрированная
- •Рекомендовано редсоветом мгту им. Н.Э. Баумана
- •Isbn 5-7038-2301-3 мгту им. Н.Э. Баумана, 2003
- •1. Интерфейс системЫ matlab
- •1.1. Программная группа matlab
- •1.2. Командное окно matlab
- •1.2.1. Главное меню
- •1.2.2. Панель инструментов
- •1.3. Настройка параметров рабочего пространства
- •1.4. Справочная система matlab
- •2. Работа в режиме прямых вычислений
- •3. Базовые объекты системы matlab
- •3.1. Способы формирования матриц и векторов
- •3.2. Матричные операции и функции
- •3.3. Решение линейных уравнений
- •3.4. Вычисление корней полиномов
- •3.5. Обработка данных
- •4. Графические средства системы matlab
- •4.1. Графические объекты на плоскости
- •4.1.1. Функция plot
- •4.1.2. Функции fplot и ezplot
- •4.1.3. Другие графические функции
- •4.1.5. Обработка данных
- •4.2. Построение трехмерных поверхностей и тел
- •4.2.1. Основные графические функции
- •4.2.2. Дополнительные возможности
- •5. Основы программирования в среде matlab
- •5.1. Общие положения
- •5.2. Примеры простых программ
- •Xlabel('sin(X)') % Надпись по оси х
- •Xlabel('X') % Надпись по оси абсцисс
- •5.3. Программа с использованием внешней функции
- •5.4. Дополнительные программы
- •5.4.1. Дифференцирование функций
- •Xlabel('Число элементов массивов')
- •Xlabel('Число элементов массивов')
- •5.4.2. Функции eval, feval
- •Xlabel(‘t’), ylabel(‘y, dy/dt’)
- •Xlabel(‘y’), ylabel(‘dy/dt’)
- •6. Символьные вычисления
- •6.1. Определение символьной переменной
- •6.2. Основные функции
- •6.3. Математический анализ
- •6.3.1. Функция limit – предел функции одной переменной
- •6.3.2. Функция diff – дифференцирование функции одной переменной
- •6.3.3. Функция int – интегрирование функции одной переменной
- •6.3.4. Функция symsum – суммирование членов рядов
- •6.3.5. Функция taylor – разложение функции в ряд Тэйлора
- •6.4. Символьное решение уравнений
- •6.4.1. Решение отдельных уравнений
- •6.4.2. Решение систем уравнений
- •6.4.3. Решение дифференциальных уравнений
- •7. Пакет моделирования динамических систем simulink
- •7.1. Рабочая среда Simulink
- •7.2. Представление динамической системы в виде структурной схемы
- •7.3. Основные приемы работы в среде Simulink
- •7.4. Модель с ветвлением соединений
- •7. 5. Интегрирование дифференциального уравнения
- •Список литературы
- •Оглавление
- •Приложение
- •Разделы справочной системы
- •Программирования и отладки программ
- •Графические средства matlab
- •Символьные вычисления (symbolic math toolbox)
4.1.5. Обработка данных
Экспериментально полученные зависимости, обладая определенной закономерностью, могут быть описаны аналитически – с помощью полиномов соответствующего порядка. Коэффициенты этих полиномов подбираются системой MATLAB методом наименьших квадратов. Аналитические зависимости удобно использовать для математического моделирования объектов.
Процедуру обработки данных средствами системы MATLAB проиллюстрируем следующим примером. Сначала сгенерируем последовательность случайных (равномерно распределенных) чисел, которую будем рассматривать как совокупность «экспериментально» полученных дискретных отсчетов некоторого процесса (их число определяется значением m):
» m=20; x=1:m; y=10*rand(1,m);
Таким образом, формируем некоторый вектор . Для аппроксимации этой зависимости воспользуемся функцией p=polyfit(x,y,k), где p – вектор коэффициентов аппроксимирующего полинома порядка k. Аналитическая зависимость, соответствующая этому полиному, получается в результате использования функции polyval (см. разд. 3):
» k=input('k ==> '); p=polyfit(x,y,k); z=polyval(p,x); plot(x,y,x,z), grid
Повторно вызывая эту командную строку, можно варьировать порядок аппроксимирующего полинома и наблюдать, как изменяется форма соответствующей кривой.
Для того, чтобы одновременно видеть эти кривые на графике и сравнить их, необходимо изменить командную строку:
» k=input('k ==> '); p=polyfit(x,y,k); z=polyval(p,x); plot(x,y,x,z), hold on
Команду hold on (отмена – hold off) используют для того чтобы зафиксировать окно графика и вывести в него несколько кривых. После получения семейства кривых вводят команду
» grid, hold off
В следующем примере используем символьные переменные, задающие различный цвет аппроксимирующих кривых (зеленый, красный, фиолетовый, черный), а также цикл for:
» color=['g' 'r' 'm' 'k'];
» for k=1:4, p=polyfit(x,y,k); z=polyval(p,x); plot(x,y,x,z,color(k)), hold on, end
»title('Аппроксимация данных полиномами'),xlabel('Номера отсчетов'),…
ylabel('Отсчеты')
» grid, hold off
Функция title позволяет ввести заголовок, а функции xlabel и ylabel – надписи по осям координат.
В качестве интерполирующей функции чаще всего выбирают полиномы той или иной степени или сплайны. Физически сплайны – это тонкие рейки, закрепляя которые в определенных точках, проводят тонкие линии. В качестве исходной зависимости используем приближенное представление синусоиды в пределах одного периода (с шагом, равным четверти периода):
» x=pi*[0:0.5:2]; y=sin(x);
Интерполяцию проведем с помощью кубических сплайнов, задав большее число узловых точек:
» x1=pi*[0:0.1:2]; z=spline(x,y,x1); plot(x,y,x1,z), grid
Более общей является одномерная функция интерполяции interp1(x,y,x1,’метод’), которая позволяет выбрать один из четырех методов интерполяции: ‘nearest’ – ступенчатая, ‘linear’ – линейная, ‘cubic’ – кубическая, ‘spline’ – сплайны. Конструкция interp1(x,y,x1,’spline') равносильна spline(x,y,x1). Существуют также двухмерная (interp2) и трехмерная (interp3) интерполирующие функции.
Упражнение. Вывести в одно окно графики интерполирующих функций при использовании всех четырех методов для той же исходной зависимости и сравнить их.