【发布时间】:2014-12-08 16:35:49
【问题描述】:
我正在尝试将 paulstretch 的信号移植到 matlab / octave。 https://github.com/paulnasca/paulstretch_python
请参阅下面的工作流程
我可以将信号分离为频率、幅度和相位,然后使用下面的代码将它们重新连接起来。 我在移植窗口段、重叠和扩展信号时遇到问题。有什么想法吗?
matlab/octave 代码示例:
freq=[0;0.534974;1.06995;1.60492;2.1399]
amp1=[3.94414e-19;1.20523e-05;5.08643e-06;4.22469e-05;3.04322e-05]
phase=[0;0.0546221;-1.11534;-2.4926;-2.55601]
a1=[freq,amp1,phase];
t_rebuilt=linspace(0,2*pi,8000);
sigcomb=zeros(1,length(t_rebuilt));
kk=0
for kk=1:1:length(freq) %rebuild signal from collected freq,amplitudes,and phases
sigcomb=sigcomb+a1(kk,2)*cos((a1(kk,1))*t_rebuilt+(a1(kk,3)));
end
normalize=(sigcomb/max(abs(sigcomb))*.8);
wavwrite([normalize'] ,8000,16,strcat('/tmp/test.wav'));
PS:这只是测试数据,要获得音频信号,我必须使用更多数据点,这会使问题变得一团糟。
我的想法是使用 for 循环来创建新信号的 1 秒 wav 文件,无论文件被拉伸多长时间,因为这将防止较大持续时间文件的数组大小内存问题。然后使用我已经弄清楚的另一个程序(例如 sox)将它们连接在一起。
PS:我使用的是 octave 3.8.1,它应该与 matlab 兼容
【问题讨论】:
-
也许给我们错误信息,或者看起来不正确的输出。
-
@macduff 我在移植窗口段、重叠和扩展信号时遇到问题。有什么想法吗?
标签: python matlab signal-processing octave