插值/创建信号/阵列的新长度/时间标度

时间:2012-03-20 16:56:19

标签: matlab interpolation trigonometry octave

我正在尝试使用wavwrite导出plot(yi)中显示的数据。当我进行插值时,(yi)信号不会从零开始,我如何得到(yi)插值信号从零开始?请注意,由于wavwrite不能以这种方式工作,我不能只做一个情节(xxorig,yi)。有谁知道一项工作?

我正在使用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')

enter image description here

1 个答案:

答案 0 :(得分:0)

目前还不清楚你想要输出什么 - 信号的声音或声音wav文件?

您使用WAVWRITE以WAVE格式保存声音。在这种情况下,您传递信号强度yi和可选的采样率(默认速率为8000 Hz)。你不在乎你的信号不是从0开始。

我相信您可以将yi的采样率计算为

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

如果您想要PLOT信号,请在X轴上指定时间。如果您未将x传递给plot函数,则它仅使用从1开始的订单号。这就是您的plot(yi)plot(yy)曲线不从0开始的原因。