Интерполация/създаване на нова дължина/времева скала на сигнал/масив

Опитвам се да експортирам данните, които са показани в plot(yi), като използвам wavwrite. Когато правя интерполация, (yi) сигналът не започва от нула, как мога да накарам (yi) интерполираният сигнал да започва от нула? Моля, обърнете внимание, че не мога просто да направя plot(xxorig, yi) поради факта, че wavwrite не работи по този начин. Някой знае ли работа около?

Използвам octave 3.2.4/matlab

clear all, clf
xxorig=[0, 0.418879, 0.837758, 1.25664, 1.67552, 2.0944, 2.51327, 2.93215, 3.35103, 3.76991, 4.18879, 4.60767, 5.02655, 5.44543, 5.86431, 6.28319];
xx=[0, 0.296192, 0.592384, 0.888577, 1.18477, 1.48096, 1.77715, 2.07335, 2.36954, 2.66573, 2.96192, 3.25811, 3.55431, 3.8505, 4.14669, 4.44288];
yy=[0, 0.406737, 0.743145, 0.951057, 0.994522, 0.866025, 0.587785, 0.207912, -0.207912, -0.587785, -0.866025, -0.994522, -0.951057, -0.743145, -0.406737, -2.44929e-16];

yi=interp1(xx,yy,xxorig);
subplot(4,1,1),plot(xxorig,yy),title("plot(xxorig,yy)")
subplot(4,1,2),plot(xx,yy),title("plot(xx,yy)")
subplot(4,1,3),plot(yy),title("plot(yy)")
subplot(4,1,4),plot(yi),title("plot(yi)")
wavwrite([yy'] ,16,32,'/tmp/test.wav')

въведете описание на изображението тук


person Rick T    schedule 20.03.2012    source източник


Отговори (1)


Не е ясно какво се опитвате да експортирате - графика или звуков wav файл на сигнала?

Използвате WAVWRITE, за да запазите звука във формат WAVE. В този случай предавате интензитет на сигнала yi и по избор честота на дискретизация (честотата по подразбиране е 8000 Hz). Няма да ви пука, че вашият сигнал не започва от 0.

Вярвам, че можете да изчислите честотата на извадката си за yi като

Fs = numel(xxorig)/(xxorig(end)-xxorig(1));

Ако искате да ГРАФИЧЕСКИ сигнала, посочвате времето по оста X. Ако не подадете x към функцията plot, тя използва само номера на поръчки, започващи от 1. Ето защо вашата крива plot(yi) или plot(yy) не започва от 0.

person yuk    schedule 20.03.2012