2014-01-02 5 views
0

Мне нужно получить список (массив ячеек) содержимого одного подполя в файле PDB. Я подготовил свою структуру и сейчас ищу что-то вродеСодержимое подполя

resnames = getfield(PS.Model.Atom,'resName') 

Это, однако, оставляет меня только с первой записью. Мне нужен вывод, похожий на команду what.

+0

Не могли бы вы описать структуру немного больше, предпочтительно получением пример с входным и желаемым выходом? Если я попробую 'a.b.c = [1: 3]; getfield (a.b, 'c') 'Он прекрасно возвращает' [1 2 3] 'как и ожидалось. –

+0

getfield (PS.Model.Atom.resName) возвращает множество 'ans = NAME' заявления. Мне нужен только список тех имен, которые я мог бы поместить в массив ячеек. Однако getfield (PS.Model.Atom, 'resName'' возвращает только первый. –

ответ

1

Я считаю, что вы можете иметь что-то вроде этого:

a{1}='s'; 
a{2}='t'; 

Теперь, назвав его как так

a{:} 

вернется в несколько раз:

ans = 

s 


ans = 

t 

Однако, если вы можете обернуть с кронштейнами:

{а {:}}

Это приятно вернуть все сразу: ANS =

's' 't' 

Теперь ans массив ячеек.


Я не смог угадать точную структуру, но, надеюсь, это решение (упаковка материала с кронштейнами) до сих пор работает. Если нет, вы всегда можете просто перебрать свою переменную и извлечь элементы по одному.

+0

Да, спасибо, я знаю, что я мог бы циклически, но и «размер», и «длина» забрасывали ошибки. –

+0

@ matlab-oh- no Small tip: никогда не используйте 'length', если вам не нужно, регулярный выбор -' numel'. Это связано с тем, что для массива 0x1 или 1x0 длина равна 1, но вы не можете правильно ее перевернуть. Также (если используется правильно) размер и длина должны были позволить вам зацикливаться. В качестве учебного опыта вы можете попытаться выяснить, почему они не с помощью 'dbstop if error'. –

0

Ваш массив структур не является скаляром в какой-либо точке дерева. Где-то в иерархии у вас есть массив структур 1xN, который даст вам несколько выходов ans. Другое предложение - использовать динамические имена полей. Вместо getfield, это было бы:

PS.Model.Atom.('resName') 

Таким образом, вы могли бы принять предложение Денниса и образуют клетку всех укусах, как:

resnames = {PS.Model.Atom.('resName')}; 
Смежные вопросы