讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。
MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili
以下内容节选自第三章3.5节
triu函数和tril函数,它们用法相同,可分别用来返回矩阵的上三角部分和下三角部分。
-
triu(A,k)返回A的第k条对角线上以及该对角线上方的元素,其他位置元素用0填充,k等于0时可以简写成triu(A)。
-
tril(A,k)返回A的第k条对角线上以及该对角线下方的元素,其他位置元素用0填充,k等于0时可以简写成tril(A)。
默认值k = 0是主对角线,k > 0位于主对角线上方,而k < 0位于主对角线下方。
下面我们用这两个函数来做一个有趣的练习题:生成一个n阶(例如n=4)的对称矩阵,里面的每个元素都是位于区间[0, 9]中的随机整数。
答案如下:
n = 4; num = n*(n-1)/2; A = zeros(n); A(triu(true(n),1)) = randi([0,9],num,1); A = A+A'+diag(randi([0,9],n,1)) % 随机生成的对称矩阵: 7 6 0 9 6 3 8 6 0 8 6 7 9 6 7 1
这几行代码综合性非常强,核心的思路就是将这个对称矩阵分成三个部分:首先随机生成对称矩阵的上半部分(不包括主对角线),这是一个上三角矩阵;然后将其转置来确保矩阵的元素是对称的;最后使用diag函数生成一个随机的对角矩阵。将上半部分、下半部分以及对角矩阵相加即可得到这个对称矩阵。
具体代码的解释如下:对于一个n阶的对称矩阵,它的上三角部分(不包括主对角线)有n*(n-1)/2个元素,上方代码中将其赋值给num;矩阵A初始化为一个n阶全为0的矩阵;true(n)创建了一个n阶的逻辑矩阵,其中所有元素都为逻辑值1;triu(true(n),1)返回了一个不包括主对角线的上三角的逻辑矩阵,我们用它对A矩阵进行逻辑索引; randi([0,9],num,1)生成了一个有num个元素的向量,其中每个元素都是位于区间[0, 9]中的随机整数;A(triu(true(n),1))选取了矩阵A的上三角部分(不包括主对角线),然后将其赋值为随机生成的整数;A’是矩阵A的转置,由于我们已经填充了A的上三角部分,将它转置我们可以确保下三角部分与上三角部分是对称的;diag(randi([0,9],n,1))生成了一个主对角线上的元素为区间[0, 9]中的随机整数,而其它地方都为0的n阶矩阵;将这三个矩阵相加,即可得到最终的对称矩阵。
以后我们学了循环语句后,还可以利用循环语句生成,虽然循环语句更直观且代码易于编写,但直接基于矩阵操作在MATLAB中通常更高效,尤其是对于大型矩阵。
今天的文章
矩阵的trace怎么求_矩阵初等变换口诀分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/80513.html