Как выбрать 2 строки и пропустить 3 строки для больших наборов данных в MATLAB?

#matlab #row #sequence

#matlab #строка #последовательность

Вопрос:

Я работаю над своим исследованием, и моя матрица равна 1082825×23. Я уже разделил таблицу с нужным мне столбцом, так что теперь это таблица 1082825×1. Я посмотрел на форуме Mathworks о выборе определенных строк и пропуске некоторых, однако набор данных с форума довольно мал, поэтому он не был полезен для больших наборов данных.

Самым близким, что я нашел в Mathworks, был этот код, который я изменил

 keepRowsIdx = setdiff(4:size(gyro_x, 1), 6:3:size(gyro_x, 1));
new_gyro_x = gyro_x(keepRowsIdx, :);
 

Однако это дает new_gyro_x результаты, подобные следующим

 0.0047
0.0105
0.0117
0.0234
0.0105
0.0328
etc...
 

На самом деле я пытаюсь получить значения, которые я выделил на изображении ниже, по всему столбцу. Я полагаю, мне нужно будет использовать цикл for, но я не уверен, как к этому подойти.

введите описание изображения здесь

Ответ №1:

Одним из методов может быть создание двух векторов с одинаковым коэффициентом пропускания, но с уникальными начальными индексами. Затем объедините и преобразуйте эти два вектора в вектор с одним столбцом, который можно использовать для индексации сохраненных значений gyro_x .

 %Test vector, change to your dataset%
gyro_x = table((1:1082825).');
gyro_x = table2array(gyro_x);

Start = 4; End = 15; Skipping_Factor = 5;
Indices = (Start:Skipping_Factor:End);
Indices = reshape([Indices; Indices 1],[1 2*numel(Indices)]);

gyro_x(Indices)
 

Комментарии:

1. Спасибо! Я не могу поверить, что я не думал об этом; ты лучший!

2. Нет проблем, рад помочь.