我正在尝试合并两个音频信号,但如果不使用min
运算符则无法合并。我需要同时播放音轨,这是我目前的解决方案,但有问题。它只播放最短音轨的持续时间,这是我的代码到目前为止:
mLength = min([length(s1), length(s2)]);
s1 = s1(1:mLength);
s2 = s2(1:mLength);
s3 = s1 + s2;
s1
可能长达6秒,s2
可能长达10秒。将它们组合起来会给我一个持续时间为6秒的曲目。
我基本上需要将min
更改为max
。执行此操作后,它会向我显示错误Index exceeds matrix dimensions.
任何人都知道如何做到这一点?这个琐碎的问题需要很长时间才能尝试解决,谢谢!
答案 0 :(得分:1)
这是一个简单的方法:
mLength = max(length(s1), length(s2));
s1(mLength+1,:) = 0;
s2(mLength+1,:) = 0;
s3 = s1(1:mLength,:) + s2(1:mLength,:);
这在最大位置加1处指定零。这对最长信号的影响只是附加零。在最短的一个上,它会根据需要自动填充零。现在两个信号的长度相同,可以添加,忽略最后一个零。