Попытка с помощью мобильного обозначения, чтобы получить только 1-й строки, например:
data(1,:) = {'set','press','dp'}
вместо распаковки * весь массив ячеек, так как strcmp
может работать на клеточных массивах.
>>> data = {'set' 'press' 'dp'
32.7045 17.805965 123.75047
32.690094 17.80584 123.74992
32.6232 17.815094 123.790115}
data =
'set' 'press' 'dp'
[32.7045] [17.8060] [123.7505]
[32.6901] [17.8058] [123.7499]
[32.6232] [17.8151] [123.7901]
>>> col_idx = strcmp(data(1,:),'dp')
col_idx=
0 0 1
Затем возвращают dp
с использованием логических индексов и cell2mat
...
>>> dp = cell2mat(data(2:end,col_idx))
dp =
123.7505
123.7499
123.7901
или распаковывать * и сцепить разделенный запятыми список
>>> dp = [data{2:end,col_idx}]
dp =
123.7505 123.7499 123.7901
В качестве альтернативы попробуйте cell2struct
,
>>> datastruct = cell2struct(data(2:end,:),data(1,:),2)
datastruct =
3x1 struct array with fields:
set
press
dp
Тогда dp
является ...
>>> dp = [datastruct.dp]
dp =
123.7505 123.7499 123.7901
* Используя оператор двоеточия внутри фигурных скобок распаковывает массив клеток в запятую. Использование квадратных скобок по горизонтали объединяет список, разделенный запятыми, который возвращает массив символов set pressdp{{{
, поскольку первый элемент в списке представляет собой массив символов. Символы мусора между и после 'set'
, 'press'
и 'dp'
вызваны чтением парных разрядов как char
. IE: char(32.7045)
- эквивалент ASCII пробелов. Массивы всегда распаковываются как столбцы.
Чтобы понять, почему ваш код не работает, ознакомьтесь с промежуточным результатом '[data {:}]'. Это определенно не то, что вы хотите. – Daniel
Пробовал другие опции, такие как '[date {1,:}]', но это не помогло ... – Bro2ma