Что здесь делает оператор двоеточия? - PullRequest
0 голосов
/ 29 мая 2019

Что делают эти строки кода?

x0 = rand(n,2)
x0(:,1)=W*x0(:,1)
x0(:,2)=H*x0(:,2)
x0=x0(:)

Это просто один большой вектор-столбец или?

1 Ответ

2 голосов
/ 29 мая 2019

Я бы посоветовал вам взять 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

...