我是半新的matlab,我已经在我的课程中使用了一段时间了,但从来没有真正被它吸收过。
我有一个相当大的矢量,它是一个准确的声音文件。我需要从这个向量中获取每128个元素,并将它们添加到矩阵中。
因此矩阵行1将包含前128个(1-128)元素,矩阵行2将包含第二个128(128-256)等...
我该怎么做呢?我查了一下matlab mathworks帮助文件,但却找不到任何东西。我知道我可以使用z = [x,y]附加矩阵,但它不适用于我......
感谢任何帮助,谢谢!
答案 0 :(得分:1)
查看reshape
命令。如果你以(N * 128 x 1)向量开始,然后使用reshape(A,[N,128])
,你应该得到一个(N乘128)矩阵。
答案 1 :(得分:1)
您可以使用reshape命令执行此操作:
>> A = [1 2 3 4 5 6];
>> B = reshape(A, 3, 2)'
B =
1 2 3
4 5 6
答案 2 :(得分:0)
正如其他人所说,reshape
命令是适合您的工具。但在开始使用reshape
之前,您需要确定两件事:
通常对于任何声音文件都会有一些标题信息,您需要从文件位置after
开始读取标题信息。你可以找到在线手册来获取标题数据的大小,例如可以在这里找到规范的声音数据格式:https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
如果声音文件的格式是其他的,那么你必须找到它。
要读取的样本数应截断或填充为128的倍数,因为您需要N * 128大小的矩阵
答案 3 :(得分:0)
这甚至可以稍微方便一些,因为reshape
可以计算其参数本身之一
A = [1 2 3 4 5 6];
B = reshape(A, 3, 2)'
用
替换第二行B = reshape(A, 3, [])'
[]
输入告诉reshape
:确定自己应该是什么(length(A)/3
在你的情况下)