Matlab: итерационный цикл
У меня есть сигнал WAV, который я читаю в сэмплах в буфере s. Я хочу сохранить в новом буфере x сэмплы, которые находятся в позиции 10, 20, 30..110. Как я могу это сделать? Я должен написать цикл, но как я могу написать контор?
2 ответа
Не уверен, что вы подразумеваете под буфером, но вот как вы можете получить эту информацию из массива. Дано s = 1:107
, вы можете получить элементы, начиная с позиции 10
выполнив команду:
b = s(10:10:end);
Сейчас, b
равняется 10 20 30 40 50 60 70 80 90 100
Я хочу сохранить в новом буфере x сэмплы, которые находятся в позиции 10, 20, 30..110. Как я могу это сделать?
x = s(10:10:110);
Это тоже будет работать:
x = s(10*(1:11));
Решение Houstanb является лучшим, если вы хотите, чтобы каждый 10-й сэмпл был из ваших буферов, а не только до 110, как вы заявляете.
Я должен написать цикл, но как я могу написать контор?
Если вам нужно написать цикл for, вы можете попробовать это:
x = nan(1,11);
for k=1:11
x(k) = s(k*10);
end
Но это не очень хорошее решение с точки зрения MATLAB, где векторизация предпочтительна.