2013-07-05 6 views
1

Я не понимаю, почему MATLAB отображает ошибку при вводе следующих строк в командной строке.MATLAB: Несоответствие размеров подзаголовков

k=2; 

c=[0 0 0 1 0 0 0 0;0 0 0 0 1 0 0 0]; 

temp1=[1 0;2 0;1 0;5 0;9 0;5 0;6 0;7 0]; 

s=c*temp1; 

w(2,k)=s 

индексируются размер присваивание несоответствие.

>> s 

s = 

    5  0 
    9  0 

где ш (2, к) не что иное, как матрица 2х2 и присваивается матрица 2х2 и по-прежнему отображать эту ошибку. Я хотел бы поблагодарить человека, который когда-либо мог помочь мне лучше понять эту тему.

+0

Это может помочь, если вы сможете объяснить немного больше о том, чего вы хотите достичь. Вы хотите заполнить 'w' содержимым' s'? Кроме того, что такое 'w'? Вы не определили его в своем примере кода. – Marius

ответ

1

Ошибка в том, что w(2,k) является 1x1 матрица, и вы пытаетесь поставить s, а 2x2 матрицу в нем. Когда вы выполняете операцию назначения, то есть =, обе стороны знака равенства должны иметь одинаковые размеры. Если они этого не сделают, вы получите ошибку несоответствия измерения.

, если w является 2x2, как вы говорите, тогда w = s должен работать, или w(2,k) = s(2, k) тоже должен работать. Что именно вы пытаетесь достичь?

+0

'w (2, k) = s (2, k)' будет копировать только один элемент, а не всю матрицу –

+0

@MohsenNosratinia, конечно ... Вот почему я спросил, какие намерения OP – Dan

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