2015-04-25 3 views
1

Мне нужно создать матрицу, в которой у меня есть точки в диапазоне 0-1, имитирующие xor-gate, как в изображении. Бук-точки должны существовать и в верхнем левом и нижнем правых углах.Matlab, размеры матрицы должны совпадать

enter image description here

Я использую этот код:

pats = [0.4*rand(n/4,2); 
      0.4*rand(n/4,2)+0.6; 
      0.4*rand(n/4,2)+[0 0.5]; 
      0.4*rand(n/4,2)-[0 0.5]+0.6]; 

И я получаю следующее сообщение об ошибке:

Warning: Size vector should be a row 
vector with integer elements. 
> In main at 24 
Warning: Size vector should be a row 
vector with integer elements. 
> In main at 24 
Warning: Size vector should be a row 
vector with integer elements. 
> In main at 24 
Warning: Size vector should be a row 
vector with integer elements. 
> In main at 24 
Error using + 
Matrix dimensions must agree. 

Error in main (line 24) 
     pats = [0.4*rand(n/4,2); 

ответ

2

Элемент мудрая дополнение не работает для randn(n/4,2) + [0 0.5], потому что вы пытаясь добавить матрицу n/4 по 2 матрице 1 на 2. Вы должны использовать bsxfun:

pats = [0.4*rand(n/4,2); 
    0.4*rand(n/4,2)+0.6; 
    bsxfun(@plus,0.4*rand(n/4,2),[0 0.5]); 
    bsxfun(@minus,0.4*rand(n/4,2),[0 0.5]) + 0.6]; 

Функция bsxfun(@plus, A, b) добавит I-й элемент b к г-го столбца матрицы A.

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