2015-10-12 6 views
1

Как можно получить доступ к нескольким элементам в массиве ячеек векторов или матриц? Например, предположим, что один имеет следующий массив ячеек:matlab: доступ к нескольким элементам в массиве вложенных ячеек

c={[1 2 3] [4 5 6 7]}; 

можно получить доступ к элементам 2, 6 и 7 следующим образом:

[c{1}(2) c{2}(3) c{2}(4)] 

Предположим, что один вместо этого имеет два вектора с индексами до требуемых элементов , первый вектор которого содержит индекс ячейки, а второй из которых содержит векторный индекс искомых элементов.

Например, чтобы получить доступ к выше трех элементов, один, возможно, захотите использовать «индекс ячейки вектор» ci=[1 2 2] и «вектор индексного вектор» vi=[2 3 4] в каком-то образом сродни следующему:

c{ci}(vi) 

Как можно ли выполнить такой вложенный доступ, не прибегая к циклам?

ответ

1

Я не думаю, что вы можете сделать, и вот почему я так думаю: рассмотрим массивы. У вас может быть массив c=rand(3), который является 3x3. Вы можете получить к нему доступ как c(1:2,3), чтобы выбрать подмассив, но вы не можете получить доступ к (1,1), (2,2) и элементу (3,3) в то же время с использованием индексов массива. Вы можете использовать линейные индексы для массивов, как в c(sub2ind([3,3],[1 2 3],[1 2 3])). Но для ячеек два вида индексов отличаются друг от друга, и вы не можете использовать линейный тип индексации, который смешивает ячейки и индексы массива.

Вот еще лучший аргумент. Клетки очень медленные, поэтому их сильная сторона должна быть чем-то еще. И это их универсальность: вы можете положить что-нибудь в ячейку. В том числе функции ручки:

c={1, [2 3], @sin}; 

Но потом что-то смешное происходит, если вы пытаетесь индексировать:

>> c{2}(2) 

ans = 

    3 

>> c{3}(2) 

ans = 

    0.9093 

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

Смежные вопросы