У меня есть сигнал, который циклически повторяется от 0 до 4 секунд, и я хотел бы интерполировать сигнал для циклического повторения дважды, когда он идет от 0 до 1 секунды.Я знаю, что это проблема с моей переменной xi
;Я просто не уверен, как это исправить.
Пример - это простое уравнение синусоидальной волны, но я буду импортировать аудиофайл wav в реальном;Вот почему я решил использовать интерполяцию.К сожалению, это не может быть просто простым изменением графика, потому что это будет аудио-файл, который будет импортирован, некоторые вычисления сделаны на нем, а затем экспортированы обратно как другой аудио-файл.
%Interpolation test
clear all, clc,clf,tic
x= linspace(0,2*pi,400); %from 0 to 4 sec
fs_rate=100
freq=2;
y=sin(freq*(x));
xo=linspace(0,length(y)/fs_rate,length(y)); %go from 0 to x sec
xi=linspace(0,1,length(y)); %go from 0 to 1 sec
new_y=interp1(xo,y,xi,'linear');
subplot(2,2,1),plot(xo,y),title('Orginal signal over 4 sec')
subplot(2,2,3),plot(xi,new_y),title('Entire signal over 1 sec')
Я вернулся и сделал то, что рекомендовал Сергей, и использовал повторную выборку и повтор, но я заметил, что для некоторых значений строки не совпадают с частотой дискретизации (см. Изображение ниже).
Обратите внимание, что верхнее значение изображения для строк говорит о 1000, а нижнее изображение говорит о строках = 1008. Это происходит, когда я изменяю значения resample и repmat (freq_new), но только для определенных значений.Как я могу это исправить?Я мог бы просто удалить все после 1000, но я не уверен, является ли это ошибкой или просто работает метод resample / repmat.
Вот код, который я использовал для проверки этого:
%resample_repmat signal
clear all, clf
Fs = 1000; % Sampling rate
Ts = 1/Fs; %sampling interval
t=0:Ts:1-Ts; %sampling period
freq_orig=1;
y=sin(2*pi*t*freq_orig)'; %gives a short wave
freq_new=9;
y2=resample(y,1,freq_new); %resample matrix
y3=repmat (y2,freq_new,1); %replicate matrix
[r_orig,c_orig] = size(y) %get orig number of rows and cols
[r_new,c_new] = size(y3) %get new number of rows and cols
subplot(2,1,1),plot(y),title('Orginal signal')
title(['rows=',num2str(r_orig),' cols=',num2str(c_orig)])
subplot(2,1,2),plot(y3),title('New signal')
title(['rows=',num2str(r_new),' cols=',num2str(c_new)])