Я новичок в Matlab, поэтому мне нужно объяснение детских шагов.
У меня есть некоторые MIDI-данные, которые выглядят примерно так:
время включения/выключения note
10 1 61
90 0 61
90 1 72
92 1 87
100 0 72
Что я хочу сделать, так это расширить или «заполнить» пробелы, чтобы у меня была строка для каждого отдельного момента времени, и у меня были столбцы, которые показывают, какие заметки включены (часто одновременно есть более одной заметки). ).
конечная цель состоит в том, чтобы сделать некоторые расчеты общих отношений между нотами (гармонический диссонанс) в данный момент времени.
Поэтому я подумал, что, может быть, мне нужен новый столбец для каждой возможной ноты (их 127), а затем 1 или 0 для каждого раза. Или, может быть, я могу просто иметь матрицу, которая просто говорит мне, какие заметки включены (поэтому количество столбцов варьируется).
Я написал свой собственный псевдокод, но понятия не имею, как его реализовать. Я подозреваю, что есть простая функция, которая может это сделать. Вот мой псевдокод:
начать с 0, в момент времени 0 в новой "матрице примечаний"
для чисел: от 0 до n
если число совпадает с числом в столбце времени, перейти к столбцу включения/выключения для этой строки.
если 1 в столбце включения/выключения, то скопируйте число в столбце примечаний в «матрицу примечаний» для соответствующей строки
если 0, то не копируйте/ничего не делайте.
если число не совпадает с числом в столбце времени
, скопируйте предыдущую строку (которая может быть пустой, если не было примечаний).
для каждой строки в новой «матрице примечаний» расположите числа от младших к старшим в разных столбцах.
Так может кто подскажет что делать?? Я бьюсь головой о кирпичную стену здесь!