2013-12-05 4 views
2

Кто-нибудь есть идея, почему это не работает? Я пытаюсь запустить парфорную петлю. Я могу сделать тот же самый код, используя простой цикл, но мне нужно использовать это с parfor для массивного набора данных.Matlab Parfor переменная не может быть классифицирована

parfor n = [1:rows] 

    MeanIV(n,1) = mean([LastIV(n,1); BidIV(n,1);AskIV(n,1)]) 

    if isnan(MeanIV(n)) == 1  
     SubIV = dated.IV(n)  
     MeanIV(n,1) = SubIV  
    else  
     MeanIV(n,1) = mean([LastIV(n,1); BidIV(n,1);AskIV(n,1)])  
    end 

    dated.MeanIV = double(MeanIV) 

end 

Я получаю эту ошибку «Переменная MeanIV в parfor не может быть классифицирована».

+1

Смотрите http://www.mathworks.co.uk/help/distcomp/advanced-topics.html#bq_of7_-1 – am304

ответ

6

Это, скорее всего, линии

dated.MeanIV = double(MeanIV) 

, что это проблема.

parfor попытается «нарезать» MeanIV, т. Е. Отправить отдельные строки различным работникам. Однако на линии dated вам понадобится весь массив.

Перемещение линии после end цикла parfor, и оно будет работать.

+0

Спасибо за ответ, получил его! – BenTam64

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