在matlab中将两列立体声wav文件数据组合成具有交替元素的单个阵列
我有一个立体声wav文件数据,我读入matlab,它看起来像这样:在matlab中将两列立体声wav文件数据组合成具有交替元素的单个阵列,matlab,Matlab,我有一个立体声wav文件数据,我读入matlab,它看起来像这样: a = 1 2 3 4 5 6 我想将其更改为单个数组,如下所示: a = 1 2 3 4 5 6 因此,左声道和右声道音频数据都以交替模式进入单个阵列,其存储方式与wav文件中的存储方式相同 我试过这么做 k=1; for i=1:length(data2) data2_2(k) = data2(i, 1); k=k+1; data2_2(k) = data2(
a =
1 2
3 4
5 6
我想将其更改为单个数组,如下所示:
a = 1 2 3 4 5 6
因此,左声道和右声道音频数据都以交替模式进入单个阵列,其存储方式与wav文件中的存储方式相同
我试过这么做
k=1;
for i=1:length(data2)
data2_2(k) = data2(i, 1);
k=k+1;
data2_2(k) = data2(i, 2);
k=k+1;
end
但是我的wav文件速度非常慢,它在一个通道中包含超过200000个元素。我需要在以后为更大的wav文件执行此操作
是否有内置功能或更快的方法来完成此操作?使用范围索引的可能解决方案:
n=numel(a);
b(1:2:n)=a(:,1);
b(2:2:n)=a(:,2);
或者简单地说:
n=numel(a);
a([1:2:n 2:2:n]) = a;
a = a(:).';
这在倍频程中是可能的(在MATLAB中不确定):
使用范围索引的可能解决方案:
n=numel(a);
b(1:2:n)=a(:,1);
b(2:2:n)=a(:,2);
或者简单地说:
n=numel(a);
a([1:2:n 2:2:n]) = a;
a = a(:).';
这在倍频程中是可能的(在MATLAB中不确定):
a=a;a=a(:).
,或者在一行中a=reformate(a.),1[prod(size(a)))
,您可以对prod(size(a))
使用numel(a)
,或者只使用[]
,让Matlab计算出该维度中的大小a=a';a=a(:).
,或者在一行中a=reformate(a.),1[prod(size(a)))
,您可以使用numel(a)
表示prod(size(a))
,或者只是[]
,让Matlab计算出该维度中的大小