最大值未被识别

时间:2016-12-29 23:14:50

标签: matlab

我正在尝试合并两个音频信号,但如果不使用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.

任何人都知道如何做到这一点?这个琐碎的问题需要很长时间才能尝试解决,谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个简单的方法:

mLength = max(length(s1), length(s2));
s1(mLength+1,:) = 0;
s2(mLength+1,:) = 0;
s3 = s1(1:mLength,:) + s2(1:mLength,:);

这在最大位置加1处指定零。这对最长信号的影响只是附加零。在最短的一个上,它会根据需要自动填充零。现在两个信号的长度相同,可以添加,忽略最后一个零。