2013-02-14 2 views
1

У меня есть массив подходящих объектов, и мне нужно оценить каждую из них с несколькими значениями. Поскольку существует более тысячи таких подходящих объектов, я нахожу, что очень медленно их перебирать и оценивать с помощью значений. Так есть способ использовать какое-то векторное решение для этого?Как оценивать объекты Matlab в массиве ячеек без циклов?

Например, я могу оценить один пригодный объект по

fitArray{1,1}(400) 

, но то, что я хотел бы сделать, это оценить несколько объектов прилегания в то время в пути что-то вроде этого:

fitArray{1:1000}(400) 

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

Итак, есть ли способ сделать это без зацикливания?

+3

Ваше заявление * Цикл в Matlab всегда очень медленный * неверен и даже более неверен с последними версиями Matlab, чем со старыми версиями. Старая пословица, что векторизованное решение всегда быстрее, перестает быть верным. И иногда сложные проблемы требуют много времени, ваши надежды на поиск более быстрого решения без большой тяжелой работы могут быть нереалистичными. –

+0

@zaplec, Вы пробовали использовать функцию 'cellfun'? – slayton

+0

@slayton Да, я пробовал это раньше, но я не думал о добавлении входных значений в виде массива. Теперь я понял это и ответил на этот вопрос. – zaplec

ответ

0

Я сам нашел ответ. В конце концов, это было очень просто. Я достиг результата, я хотел, делая это:

vals = repmat({values}, size(fitArray)); 
evals = cellfun(@feval, fitArray, vals); 

Это оценивает каждый пригодный объект в массив ячеек со значением в соответствующей строке в массиве Vals. Таким образом, результат состоит в том, что массив evals имеет только результаты каждого подходящего объекта.

0

Looping - это не самая большая проблема здесь, ищите пример при скорости fitoptions ... распределение памяти ужасно, поэтому старайтесь делать все операции перед самим циклом (fitoptions, fittype и т. Д.). Если вы используете полиномиальное фитинг, и вам не нужна структура cfit, попробуйте полифит вместо этого - должно быть значительно быстрее.

+0

Фитинг был выполнен ранее, и массив ячеек содержит только подходящие объекты, которые мне нужно оценить с определенными значениями. – zaplec

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