interpft

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

Сгенерируйте некоторые точки выборки в интервале [0,3π] для функции f(x)=sin2(x)cos(x). Используйте интервал интервала dx для обеспечения равномерного расположения данных. Постройте график точек выборки.

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

Figure contains an axes. The axes contains an object of type line.

Используйте интерполяцию БПФ, чтобы найти значение функции в 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')

Figure contains an axes. The axes with title FFT Interpolation of Periodic Function contains 2 objects of type line.

Сгенерируйте три отдельных набора данных нормально распределенных случайных чисел. Предположим, что данные дискретизированы в положительных целых числах, 1: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')

Figure contains 3 axes. Axes 1 with title Row 1 contains 2 objects of type line. Axes 2 with title Row 2 contains 2 objects of type line. Axes 3 with title Row 3 contains 2 objects of type line.

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

свернуть все

Входной массив, заданный как векторный, матричный или многомерный массив. Данные в 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 функция использует метод FFT. Исходный вектор x преобразуется в область Фурье с помощью fftи затем преобразуется обратно с большим количеством точек.

См. также

|

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