MATLAB: Подстановка одного массива значениями второго - PullRequest
0 голосов
/ 18 октября 2018

У меня в основном есть два столбца (массива): столбец A представляет непрерывный поток данных в разные моменты времени (например, повышение и понижение артериального давления), а столбец B представляет начало события (например, шок или глубокий вдох).,Столбец A имеет значения для каждой ячейки, в то время как столбец B имеет значения только в момент времени, когда произошло событие, которые представляют коды для начала различных видов событий (например, 1, 2, 3, 4, 5 для 5 видов).

Какой код может использовать значения в столбце B для поднабора данных в столбце A (скажем, собрать все данные из любых моментов времени между событием 1 и 2, событием 1 и 3 или событием 1 и 4)?В основном я пытаюсь извлечь значения только для определенных сегментов периода времени и сохранить их в массиве ячеек.

Пример:

ЧтоУ меня есть:

Массив A: 10, 12, 13, 20, 15, 16, 14, 9, 8, 11, 12, 15, 14

Массив B: 1, 0, 2, 0, 0, 0, 1, 0, 2, 0, 1, 0, 2

 *(where in Array B, 1 and 2 are events--say a showing a cue and a subject 
 responding to that cue--and I want the data between a 1 and a 2)*

Что я хочу:

(New) Cell Array C: [12, 13], [9, 8], [15,14]

 *That is, it's grabbing the data from Array A, based on what falls between 
 1s and 2s in Array B, and storing them into cells of Array C*

Большое спасибо!

1 Ответ

0 голосов
/ 24 октября 2018

Вот способ:

  1. Найти индексы начала и конца.Это можно сделать с помощью strfind, который также работает с числовыми массивами.
  2. Используйте эти индексы для построения результата с циклом.

ind_start = strfind(B, [1 0]); % Or: ind_start = strfind(char(B+48), '10');
ind_end = strfind(B, 2); % Or: ind_end = strfind(char(B+48), '2')
result = cell(size(ind_start));
for k = 1:numel(ind_start)
    result{k} = A(ind_start(k)+1:ind_end(k));
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...