#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. Нет проблем, рад помочь.