Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MATLAB.doc
Скачиваний:
202
Добавлен:
13.11.2018
Размер:
1.36 Mб
Скачать

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) интерполирующие функции.

Упражнение. Вывести в одно окно графики интерполирующих функций при ис­пользовании всех четырех методов для той же исходной зависимости и сравнить их.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]