#matlab
#matlab
Вопрос:
Я пытаюсь вырезать аудиосигнал в определенном сегменте в мс. Я попробовал приведенный ниже код, и он работает нормально, но только для одного сегмента. Как я могу вырезать сигнал в нескольких сегментах?
[y,Fs] = audioread('myAudioData.wav');
cutData = y((Fs * (1 - 1)) 1 : Fs * (2 - 1), :);
plot(linspace(1, 2, length(cutData)), cutData);
ОТРЕДАКТИРОВАНО
[y,Fs] = audioread('myAudioData.wav');
nSamOr=length(y);
zVec=7865657/10^9;
zVecE=zVec 0.050;
zVecS=zVec-0.050;
startTime = ((zVecS (zVecE-zVecS))/(2 - 10));
EndTime = ((zVecS (zVecE-zVecS))/(2 10));
cutData = y((Fs * (startTime)) 1 : Fs * (EndTime ), :);
plot(linspace(1, 2, length(cutData)), cutData);
Я получаю следующую ошибку:
Индекс в позиции 1 недопустим. Индексы массива должны быть целыми положительными числами или логическими значениями.
Ошибка в Test1 (строка 9) cutData = y((Fs * (время начала)) 1 : Fs * (время окончания), :);
Любой, кто может помочь, почему я получаю эту ошибку?
Комментарии:
1. Вы можете вставить код, который теперь извлекает один сегмент в
for
цикле; в зависимости от ваших потребностей, начальная и конечная точки каждого сегмента могут быть заданы в массиве перед циклом или вычисляться на каждой итерации, поэтому они будут использоваться для извлечения данных вcutData
2. @il_raffa большое спасибо за ваш ответ. Я пытался это сделать и выдает ошибку «Индекс в позиции 1 недействителен. Индексы массива должны быть целыми положительными числами или логическими значениями «.
3. Вы должны опубликовать код, который генерирует ошибку, чтобы мы могли ее проверить
4. @il_raffa Я обновил код, но не включил цикл for, поскольку получаю эту ошибку и без цикла.