Ошибка при использовании cellfun для регрессии в кластере - PullRequest
0 голосов
/ 25 апреля 2018

Я использую Matlab 2016a в кластере моего университета.На моем локальном ПК установлен Matlab 2016b.

Я пытаюсь выполнить очень большую регрессию с помощью cellfun.Слои устойчивости к засухе и предикторов 2044x1572.Внутренние размеры «устойчивости к засухе» составляют 100x1, а внутренние размеры «предикторов» - 100x6, представляя различные предикторы для каждой ячейки.

d_regress=cellfun(@(x,y)regress(x,y),Drought_resistance,predictors,'UniformOutput',false);

Когда я запускаю этот код с образцами данных на моем локальном ПКЯ не получаю ошибок.

Однако, когда я запускаю этот код в кластере, я получаю ошибку:

    Error using  *    
    Inner matrix dimensions must agree.
    Error in regress (line 93)
    b(perm) = R \ (Q'*y);
    Error in @(x,y)regress(x,y)

Итак, я фиксирую размеры внутренней матрицы так, чтобы они были 1x100 и 100x6..

Затем я получаю следующую ошибку, которая имеет смысл из-за того, как работает регресс.

Error using  | 
Matrix dimensions must agree.
Error in regress (line 66)
wasnan = (isnan(y) | any(isnan(X),2));
Error in @(x,y)regress(x,y)

Мне пришлось использовать mldivide на кластере, чтобы сделать мойрегрессии (mldivide не дает мне ошибок), но я бы предпочел использовать regress из-за его дополнительной функциональности.Можно ли как-нибудь изменить свой код, чтобы использовать regress?

...