Это сложный вопрос для Google. Я новичок в Matlab и видел следующее утверждение, но я не вижу, как он что-то делает. Что делать x = x (:) do?
Что означает x = x (:) означает в matlab, где x - вектор?
Ответ 1
:
- оператор двоеточия. В этом контексте он преобразует x
в одномерный вектор столбца.
Итак, этот код:
x = [ 1 3
2 4 ];
x = x(:);
disp(x)
приводит к:
1
2
3
4
Ответ 2
x (:) преобразует массив в вектор-столбец.
Ответ 3
Этот синтаксис обычно используется для обеспечения того, чтобы x
был вектором столбца:
x = x(:)
Аналогично, эта строка гарантирует, что x
является вектором строки
x = x(:)'
Ответ 4
Как говорили другие, x (:) преобразует x в вектор, вектор столбца. Дело в том, что он делает ваш код надежным для пользователя, снабжающего вектор-строку моей аварии. Например,
x = 1:5;
создал вектор ROW. Для некоторых операций потребуется вектор столбца. Поскольку x (:) ничего не делает для вектора, который уже является вектором столбца, это способ записи надежного и стабильного кода.
Конечно, если x была матрицей 3x4, она все равно преобразует x в вектор-столбец длиной 12, поэтому лучший код должен проверять такие вещи, если это проблема.
Ответ 5
x(:)
изменяет вашу матрицу.
Таким образом, если ваша матрица
1 2 3
5 6 7
8 9 10
вызов x=x(:)
устанавливает x
в
1
5
8
2
6
9
3
7
10
Ответ 6
Если x - матрица, такая как: матрица 3 * 3,
x=[1,2,3;4,5,6;7,8,9];
x=x(:);
Оператор x = x (:) перечисляет матрицу как вектор столбца. Выходной сигнал будет
1
2
3
4
5
6
7
8
9
То же самое получается, когда x является вектором строки.
так что в общем случае x (:) перечисляет элементы x как вектор-столбец.
Ответ 7
Этот оператор сообщает Matlab также попытаться преобразовать тип данных.
Например:
Оба типа данных задаются как разрозненные типы:
>> foo = uint8(0);
>> bar = double(0);
Проверьте типы данных с помощью команды "whos":
>> whos foo bar
Name Size Bytes Class Attributes
bar 1x1 8 double
foo 1x1 1 uint8
Назначьте uint8 в double с помощью оператора (:):
>> bar(:) = foo;
и он остается двойным
>> whos foo bar
Name Size Bytes Class Attributes
bar 1x1 8 double
foo 1x1 1 uint8
назначить double с единицей8 без оператора (:):
>> bar = foo;
и он изменится на тип данных uint8:
>> whos foo bar
Name Size Bytes Class Attributes
bar 1x1 8 uint8
foo 1x1 1 uint8