Я бы посоветовал вам взять MATLAB Tutorial , так как индексирование массивов является фундаментальным навыком. Также см. Основные понятия в MATLAB . Строковое описание ниже, чтобы начать работу.
Что делают эти строки кода?
Давайте рассмотрим эту строку за строкой.
1. В этой строке используется rand
для генерации nx 2 матрицы равномерных случайных чисел ( ~ U (0 , 1) ).
x0 = rand(n,2) % Generate nx2 matrix of U(0,1) random numbers
2. Умножьте первый столбец на W
В этом случае x0(:,1)
означает взять все строки из x0
(двоеточие в первом аргументе) и 1-й столбец (1). Здесь оператор *
указывает, что W
- это скаляр или массив соответствующего размера для возможного умножения матриц (я думаю, что это скаляр). Запись .*
может использоваться для поэлементного умножения; см. здесь и здесь для получения более подробной информации.
x0(:,1)=W*x0(:,1) % Multiply (all rows) 1st column by W
3. Умножьте первый столбец на H
.
Использование логики, аналогичной # 2.
x0(:,2)=H*x0(:,2) % Multiply (all rows) 2nd column by H
4. Столбец силы
x0(:)
принимает массив x0
и объединяет все элементы в один столбец.
Из документации на двоеточие :
A (:) преобразует все элементы A в один столбец-вектор. Это имеет
не действует, если A уже является вектором столбца.
Связанная операция вызывает вектор строки, комбинируя это с оператором transpose . Например, попробуйте следующее: x0(:).'
x0=x0(:) % Force Column
Похожие сообщения:
Как называется оператор двоеточия в Matlab?
Как работает оператор двоеточия MATLAB?
Комбинация операций на толстой кишке в MATLAB