How to| 更新矩阵的一部分

Mathematica 具有多种矩阵操作,这些操作支持矩阵的构建、计算及可视化等操作. 同时,它具有丰富的语言,可以对矩阵的一部分进行择取并赋予新值.

定义下面的矩阵:

In[1]:=
Click for copyable input
Out[2]//MatrixForm=

在赋值式的左端使用 Part 的简写形式)设置一个元素:

In[3]:=
Click for copyable input
Out[3]=

这里表明在(1, 2) 处的元素已被更新:

In[4]:=
Click for copyable input
Out[4]//MatrixForm=

如对一整行进行设置,需使用一个索引值来指定行,并赋给一个新行:

In[5]:=
Click for copyable input
Out[6]//MatrixForm=

如对一整列进行设置,需用 All 选择所有行,并指定列:

In[7]:=
Click for copyable input
Out[8]//MatrixForm=
    

如要设置一个子阵,可以使用 Span 的简写形式 .

首先设置一个5×5矩阵,元素由0到10之间的随机整数组成:

In[24]:=
Click for copyable input
Out[25]//MatrixForm=

这里左上方突出显示的3×4矩阵对应于行1至3及列1至4:

Out[49]=

使用 Span 的简写形式 () 指定所跨越的相关行与列,更新该子矩阵:

In[26]:=
Click for copyable input
Out[27]//MatrixForm=

更新除最外围的行与列外的所有元素(负数索引由后向前计数):

In[28]:=
Click for copyable input
Out[29]//MatrixForm=
    

当更新一个大型矩阵时,应该尽量避免使用循环语句. 如果能够使用其中一种更新技术,用一个指令更新所有的元素,速度通常会快得多:

In[36]:=
Click for copyable input

用这种方法更新一行的所有元素,速度较慢:

In[37]:=
Click for copyable input
Out[37]=

这种方法要快得多:

In[38]:=
Click for copyable input
Out[38]=

如果不能避免在循环中更新矩阵,您需要小心避免额外引用矩阵. 否则,矩阵将被复制,循环将不会很快运行:

In[39]:=
Click for copyable input

这里小心地避免了额外引用. 循环运行得相当快:

In[40]:=
Click for copyable input
Out[40]=

这里,在每一步都进行矩阵的复制,循环运行得较慢:

In[41]:=
Click for copyable input
Out[41]=
New to Mathematica? Find your learning path »
Have a question? Ask support »