matlab 冒号在这里做什么?

new9mtju  于 2023-01-21  发布在  Matlab
关注(0)|答案(1)|浏览(175)

这些代码行在做什么?

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

这只是一个大的列向量吗?

anauzrmj

anauzrmj1#

我鼓励你学习MATLAB Tutorial,因为索引数组是一项基本技能。也可以参见Basic Concepts in MATLAB。下面是逐行的描述,让你开始。
这些代码行在做什么?
让我们一行一行地看。

x0 = rand(n,2) % Generate nx2 matrix of U(0,1) random numbers

    • 2.**将第一列乘以W

在本例中,x0(:,1)表示取x0所有行(第一个参数中的冒号)和第1列(1)。这里,*运算符指示W是标量或适当大小的数组,用于可行的矩阵乘法(我猜是标量)。符号.*可用于逐个元素的乘法;有关详细信息,请参见herehere
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,并将所有元素强制放到一列中。
来自colon的文档:
A(:)将A的所有元素重新整形为一个列向量。如果A已经是一个列向量,则此操作无效。
一个相关的操作是**通过将行向量与transpose操作符组合在一起,**强制生成一个行向量。
例如,尝试以下操作:x0(:).'

x0 = x0(:)       % Force Column
x0 = x0(:).'     % Force Row
    • 相关帖子:**

What is Matlab's colon operator called?
How does MATLAB's colon operator work?
Combination of colon-operations in MATLAB

相关问题