Я использую 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
?