在matlab中将两列立体声wav文件数据组合成具有交替元素的单个阵列

在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(

我有一个立体声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(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计算出该维度中的大小