Я получил эту ошибку, когда использую MATLAB R2014a.
A = [1 2 3; 4 5 6];
A'(:) = [2 2 2 3 3 3];
Но это работает, когда я разделяю его на два этапа:
B = A';
B(:) = [2 2 2 3 3 3];
Кто-нибудь знает причину?
Я получил эту ошибку, когда использую MATLAB R2014a.
A = [1 2 3; 4 5 6];
A'(:) = [2 2 2 3 3 3];
Но это работает, когда я разделяю его на два этапа:
B = A';
B(:) = [2 2 2 3 3 3];
Кто-нибудь знает причину?
В Matlab вы не можете сделать A'(:)
, потому что индексация должна появиться первой. Вместо этого сделайте A(:)'
(или используйте reshape
для лучшего контроля: reshape(A,1,[])
(я так думаю!).
Вы можете делать некоторые странные вещи, например: A{2}(:)
или A.matrix(1)
, потому что они просто индексируют, но вы не можете делать такие вещи, как это: sum(A)(:)
или A^2(:)
.
Еще одно техническое замечание: вы должны сделать A(:).'
, потому что '
выполняет сопряженное транспонирование, в отличие от .'
, которое выполняет транспонирование обычной матрицы. Конечно, в большинстве случаев они одинаковы, но лучше поступать правильно, и вы никогда не споткнетесь на (очень) странной ошибке!
transpose
как эквивалент .'
- person Matt; 30.07.2015
A'(:)
является недопустимым синтаксисом Matlab. Вместо этого попробуйтеA(:).'
. (Используйте.'
вместо'
для транспонирования матрицы, а не сопряженного транспонирования). Вы не можете использовать индексацию скобок после чего-либо, кроме имени переменной. - person David   schedule 30.07.2015A(:).'
не то же самое, что сделал быA.'(:)
. Вы можете использоватьA = reshape([2 2 2 3 3 3], size(A,2), size(A,1));
- person Luis Mendo   schedule 30.07.2015