How can I reshape and resize an array?

2 visualizaciones (últimos 30 días)
Hanuman Crawford
Hanuman Crawford el 24 de Jul. de 2017
Comentada: Hanuman Crawford el 24 de Jul. de 2017
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);

Respuesta aceptada

Walter Roberson
Walter Roberson el 24 de Jul. de 2017
If you have the Signal Processing Toolbox, use buffer()
  1 comentario
Hanuman Crawford
Hanuman Crawford el 24 de Jul. de 2017
Thanks! I just tried this and it worked perfectly.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by