2015-01-08 6 views

ответ

4

Преобразовать A в матрицу (два способа):

V = [3 11 20 31 40] 
A=[1 2 3] 
V(cell2mat(A)) 
V([A{:}]) 

Если A массив ячеек индексов, используйте

cellfun(@(m) V(m),A,'UniformOutput',false) 
+0

но если А = {[1 2 3], [2 5], [3 5]}, и я хочу иметь {[3 11 20], [11 40], [20 40]}? – bzak

+0

Ну, это совсем не то, что вы просили. Я посмотрю на это. – David

+0

@bzak: Я не понимаю, о чем вы просите. 'A' был вашим индексом, теперь это что-то другое (потому что это 2 элемента или 3 элемента). Какое поведение вы ожидаете? – Daniel

2

Использовать либо V(cell2mat(A))=[3 11 20], либо V([A{:}])=[3 11 20]

2

, но если A = {[1 2 3], [2 5], [3 5]}, и я хочу иметь {[3 11 20], [11 40], [20 40]}?

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

cellfun(@(x) V(x), A, 'UniformOutput', false) 
+0

мой вопрос: как я могу это сделать, если A является ячейкой? – bzak

+0

Извините, я думал, вы имели в виду массив ячеек двойников в оригинальной фразе. Я думаю, что cellfun решает проблему по своему усмотрению. –

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