interpft

1D интерполяция (метод БПФа)

Синтаксис

y = interpft(X,n)
y = interpft(X,n,dim)

Описание

пример

y = interpft(X,n) интерполирует преобразование Фурье значений функции в X, чтобы произвести n равномерно распределенные точки. interpft работает с первой размерностью, размер которой не равняется 1.

пример

y = interpft(X,n,dim) управляет по измерению dim. Например, если X является матрицей, то interpft(X,n,2) работает со строками X.

Примеры

свернуть все

Интерполируйте 1D данные с помощью метода БПФа и визуализируйте результат.

Сгенерируйте некоторые точки выборки в интервале для функции. Используйте интервал интервала dx, чтобы гарантировать, что данные равномерно расположены с интервалами. Постройте график точек выборки.

dx = 3*pi/30;
x = 0:dx:3*pi;
f = sin(x).^2 .* cos(x);
plot(x,f,'o')

Используйте интерполяцию БПФа, чтобы найти значение функции в 200 точках запроса.

N = 200;
y = interpft(f,N);

Вычислите интервал интерполированных данных от интервала точек выборки с dy = dx*length(x)/N, где N является количеством точек интерполяции. Обрежьте данные в y, чтобы совпадать с плотностью выборки x2.

dy = dx*length(x)/N;
x2 = 0:dy:3*pi;
y = y(1:length(x2));

Постройте график результатов.

hold on
plot(x2,y,'.')
title('FFT Interpolation of Periodic Function')

Сгенерируйте три отдельных набора данных нормально распределенных случайных чисел. Примите, что данные выбираются в положительных целых числах, 1:N N. Сохраните наборы данных как строки в матрице.

A = randn(3,20);
x = 1:20;

Интерполируйте строки матрицы в 500 точках запроса каждый. Задайте dim = 2 так, чтобы interpft работал на строках A.

N = 500;
y = interpft(A,N,2);

Вычислите интервал интервала интерполированных данных dy. Обрежьте данные в y, чтобы совпадать с плотностью выборки x2.

dy = length(x)/N;
x2 = 1:dy:20;
y = y(:,1:length(x2));

Постройте график результатов.

subplot(3,1,1)
plot(x,A(1,:)','o');
hold on
plot(x2,y(1,:)','--')
title('Row 1')

subplot(3,1,2)
plot(x,A(2,:)','o');
hold on
plot(x2,y(2,:)','--')
title('Row 2')

subplot(3,1,3)
plot(x,A(3,:)','o');
hold on
plot(x2,y(3,:)','--')
title('Row 3')

Входные параметры

свернуть все

Входной массив, заданный как векторный, матричный или многомерный массив. Данные в X приняты, чтобы быть выбранными в равномерно расположенном с интервалами интервале независимой переменной. interpft работает лучше всего с периодическими данными.

Типы данных: single | double
Поддержка комплексного числа: Да

Число точек, заданное как положительный целочисленный скаляр.

Типы данных: single | double

Величина для работы, заданная как положительный целый скаляр. Если значение не задано, то по умолчанию это первый размер массива, не равный 1.

  • interpft(X,n,1) интерполирует столбцы X.

  • interpft(X,n,2) интерполирует строки X.

Пример: interpft (X, n, 3)

Выходные аргументы

свернуть все

Интерполированные точки, возвращенные как вектор, матрица или многомерный массив. Если length(X,dim) = m и X имеют интервал выборки dx, то новым интервалом выборки для y является dy = dx*m/n, где n > m.

Если dim задан, то interpft заполняет или обрезает X до длины n в размерности dim, так, чтобы size(y,dim) = n.

Алгоритмы

Функция interpft использует метод БПФа. Исходный вектор x преобразовывается к области Фурье с помощью fft, и затем это преобразовывается назад с большим количеством точек.

Смотрите также

|

Представлено до R2006a

Была ли эта тема полезной?