2016-02-24 2 views
2

Я пишу код, в котором у меня есть 2D структурный массив (organism = 10x10 struct), одно из его полей состоит из полностью скаляров, и я хочу извлечь все эти скаляры и помещаем их в матрицу. Я попытался положить его в квадратные скобки, но вместо того, чтобы дать мне прямоугольную матрицу, он дал мне матрицу длинного ряда;Matlab: превратить массив структурных массивов 2d в матрицу

>> [organism(1:3,1:3).fitness] 

ans = 

-5 990 493 492 -5 -8 994 -5 -10 

Опять же, я надеялся получить

-5 990 493 
492 -5 -8 
994 -5 -10 

Я попытался vertcat(organism(1:3,1:3).fitness), но, как и следовало ожидать, он просто дал мне одну колонку. Я надеюсь сделать это без циклов, поскольку в конечном итоге это будет весь массив структур с размером минимум 50x50. Есть ли способ превратить поле, которое является всем скаляром в 2D структурном массиве, в матрицу с одинаковыми размерами?

(у меня не будет никаких проблем с 40x60 превращается в 60x40, я не ожидаю, чтобы иметь какие-либо трудности Транспонирование матрицы я получаю из.)

ответ

1

Вы можете использовать Reshape:

scalar_matrix = reshape([organism.fitness], size(organism)); 
Смежные вопросы