2013-09-16 2 views
0

Я пытаюсь использовать свой массив в одном измерении, но получаю ошибку «Несоответствие размеров подзаголовков». Тем не менее, я могу выполнить ту же операцию, если сначала создаю временную переменную. Есть ли способ сделать это, не создавая временную (y) переменную? Еще лучше, есть ли способ сделать это без цикла, используя индексный вектор?Несоответствие размера подзапросов - размер перезаписи

спасибо.

x = zeros(2,5); 
idx = [1 2]; 

% This doesn't work... 
% x(idx,:) = [x(idx,:) 1]; 

% This doesn't work... 
% for i=idx 
%  x(i,:) = [x(i,:) 1]; 
% end 

% This works... 
for i=idx 
    y(i,:) = [x(i,:) 1]; 
end 
x = y; 
+1

Что вы хотите сделать? Вырастите x в одном измерении с помощью единиц? Do 'x = [x ones (размер (x, 1), 1)];' – chappjc

ответ

1

Ошибка в том, что x(idx,:) имеет размер 2x5 и 1 размера 1х1, так что вы не можете сцепить два. Вот ошибка я получаю в октаве:

>> [x(idx,:) 1] 
error: horizontal dimensions mismatch (2x5 vs 1x1) 

Вы можете, однако, сделать это:

>> [x(idx,:) ones(length(idx),1)] 
ans = 

    0 0 0 0 0 1 
    0 0 0 0 0 1 

Вам нужны промежуточный переменный, хотя (ваш y).

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