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, где векторизация предпочтительна.

Другие вопросы по тегам