MATLAB - Как добавить в строки матрицы, используя forloop - PullRequest
1 голос
/ 12 августа 2011

Я наполовину новичок с Matlab, я уже давно использую его в своем курсе, но никогда не принимал его.

У меня есть вектор довольно большого размера, это точный звуковой файл.Мне нужно взять каждые 128 элементов из этого вектора и добавить их в матрицу.

Таким образом, строка матрицы 1 будет содержать первые 128 (1-128) элементов, строка 2 матрицы будет содержать вторые 128 (128-256) и т. Д. *

Как мне поступитьделая это?Я просмотрел файлы справки matlab mathworks и не смог ничего найти.Я знаю, что могу добавлять матрицы, используя z = [x, y], но это не работает для меня ...

Спасибо за любую помощь, спасибо!

Ответы [ 4 ]

1 голос
/ 12 августа 2011

Вы можете сделать это с помощью команды reshape:

>> A = [1 2 3 4 5 6];
>> B = reshape(A, 3, 2)'
B = 
      1 2 3
      4 5 6
1 голос
/ 12 августа 2011

Посмотрите на команду reshape.Если вы начинаете с (N * 128 на 1) вектора, то с reshape(A,[N,128]) вы должны получить матрицу (N на 128).

0 голосов
/ 05 января 2014

Это может быть сделано даже более удобно, так как reshape может вычислить один из своих аргументов

В MarkD's answer :

A = [1 2 3 4 5 6];
B = reshape(A, 3, 2)'

заменить вторую строку на

B = reshape(A, 3, [])'

Вход [] сообщает reshape: определите, что это должно быть (length(A)/3 в вашем случае)

0 голосов
/ 12 августа 2011

Как говорили другие reshape команда - это правильный инструмент для вас. Но прежде чем вы начнете использовать reshape, вам нужно убедиться в двух вещах:

  1. обычно для любого звукового файла будет некоторая информация заголовка, вам нужно начать чтение с позиции файла after информации заголовка. Вы можете найти онлайн-руководства для получения размера данных заголовка, например, канонический формат звуковых данных можно найти здесь: https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ Если формат вашего звукового файла другой, вам придется это выяснить.

  2. число считываемых выборок должно быть либо усечено, либо дополнено до кратного 128, поскольку требуется матрица размером N * 128

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...