2015-02-26 3 views
0

Я использовал этот метод для добавления в массивы в других программах, но это, похоже, не работает. Я смущен и не могу найти ответ на эту проблему.Ошибка добавления в массив

Ошибка:

The sample size is: Error using horzcat 
CAT arguments dimensions are not consistent. 

Ошибка в CalculateElo (строка 14) playerGroup = [R] playerGroup;

Код:

function [accuracy] = CalculateElo (referenceElo , sampleSize, lower, upper) 

fprintf('The sample size is: %d', sampleSize); 

% Popoulate an new array 
playerGroup = []; 
playerGroup = [playerGroup referenceElo]; 

for i=1:(sampleSize - 1) 
    %Create group size 
    a = 0; 
    b = 2000; 
    r = (b-a).*rand(1000,1) + a; 
    playerGroup = [playerGroup r]; 
end 
+0

'rand (1000,1)' - это 1000 строк строки vecor. Вы не можете добавить его в качестве нового столбца в 'playerGroup', если он имеет различное количество строк. – Marcin

ответ

1

Выражение, как [x y] пытается объединить массивы x и y вдоль размерности 2. Каждая строка массива в Matlab должны иметь одинаковую длину (аналогично, каждый столбец должен иметь тот же длина). Следовательно, если size(x,1) = size(y,1), [x y] вернет массив размером size(x,1) по первому размеру и size(x,2)+size(y,2) по второму измерению. В противном случае вы получите ошибку cat, подобную той, которую вы показываете.

r имеет размер (1000,1), так что, если первый размер referenceElo не имеет размер 1000, вы получите ошибку cat.

Вы не указали размер referenceElo, но я предполагаю, что это единственный номер. Вы можете использовать (транспозиции) оператор ' написать

playerGroup = [playerGroup r']; 

возвращая массив размера (1,1001). Или вы могли бы использовать выражение формы [x;y], который сцепляет по размерности 1:

playerGroup = [playerGroup;r]; 

возвращающее массив размера (1001,1).

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