I am trying to divide a signal (audio file) into frames with a length of 128.
I'm using the reshape() function but the problem is that the number of samples cannot be divided by 128 so I am getting an error "To RESHAPE the number of elements must not change.".
The solution I thought of is to increase the number of elements in the array to the next multiple of 128 before using the reshape() function. So far I have written code for calculating the number of elements I should extend the array by (copy/pasted below). I am looking for a way to extend the array by the calculated number of elements.
It feels like this should be a pretty simple task but I am fairly new to Matlab so I don't yet know the syntax.
[x,fs] = audioread('audio.wav');
windowLength = 128;
frames = length(x)/windowLength;
frames = ceil(frames);
extend = windowLength*frames - length(x);

 採用された回答

Walter Roberson
Walter Roberson 2017 年 7 月 24 日

2 投票

If you have the Signal Processing Toolbox, use buffer()

1 件のコメント

Hanuman Crawford
Hanuman Crawford 2017 年 7 月 24 日
Thanks! I just tried this and it worked perfectly.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Resizing and Reshaping Matrices についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by