matlab产生对称矩阵

最近发现很多人产生对称矩阵的方法并不是很好,估计并没有理解对称矩阵的本质。其实对称矩阵没什么可说的可以自行百度。这里有几个关于对称矩阵重要性质要知道:
1. 如果A为对称矩阵则必须保证A为方阵
2. 对于任何方阵X,X+XT是对称矩阵。(这里就提到了产生对称矩阵的方法)。
3. 对角阵都是对称矩阵。(最简单的对称矩阵)。

根据上述性质可以知道用matlab产生对称矩阵有如下方法:
1. 根据性质2。A=A'+A; 
>> A=rand(3);  
>> A=A'+A 


2. 根据性质3。A=diag(a); 生成一个对角阵A 其中a是一个向量(行向量,列向量结果一样)。
>> a=rand(3,1);  
>> b=a'; 
>> A=diag(a);
>> B=diag(b);

3. 产生随机矩阵,分别取矩阵的上三角阵和下三角阵来产生对称矩阵。关于tril和triu的用法这里不多做解释。
 
上面三种方法都可以产生对称矩阵。但是方法2只能产生对角阵并不实用。 方法3是网上大多数人给出的方法也是很多人第一个想到的方法,
这个方法有一定的可取性,但大多数情况下我们只是想得到一个随机的对称矩阵,这时你就发现方法3不如方法1方便了,另外我们用matlab跑一
下时间可以发现方法1比方法3要快将近1倍(第一个为方法3时间,第二个为方法1时间)。

4.  以下代码是在m文件里运行的。
A = rand(3)
tic;
B = tril(A,-1)+triu(A',0);
toc;
tic;
C=(A'+A)/2;
toc;

5. 同样我们可以想到如何产生‘对称半正定矩阵’以及‘对称正定矩阵’。具体方法和对比后面会写出来

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,可以使用几种方法生成对称矩阵。 第一种方法是根据性质2生成对称矩阵。假设矩阵A是一个方阵,可以通过令A等于其转置的乘积来生成对称矩阵。具体代码如下: ``` A = rand(3); A = A' * A; ``` 这里我们先生成一个随机矩阵A,然后将A等于A的转置乘积,从而得到对称矩阵A。 第二种方法是根据性质3生成对称矩阵。可以通过给定一个向量a,然后将其转置的乘积生成一个对角阵A,从而得到对称矩阵。具体代码如下: ``` a = rand(3,1); A = diag(a) * diag(a)'; ``` 这里我们先生成一个随机列向量a,然后将其转置的乘积生成对角阵A,最后再将A乘以a的转置得到对称矩阵A。 第三种方法是通过取一个随机矩阵的上三角阵和下三角阵来生成对称矩阵。具体代码如下: ``` A = rand(3); B = tril(A,-1) + triu(A',0); ``` 这里我们先生成一个随机矩阵A,然后使用tril函数获取A的下三角阵,使用triu函数获取A的上三角阵。最后将这两个阵相加即可得到对称矩阵A。 需要注意的是,方法2只能生成对角阵,并不常用实际应用中。方法3是网上大多数人给出的方法,也是一种常见的生成对称矩阵的方法。但在大多数情况下,我们只需要一个随机的对称矩阵,此时方法1更加方便。另外,通过运行时间可以发现,方法1的运行速度比方法3快近1倍。 另外,如果想生成对称正定矩阵对称正定矩阵,也有相应的方法。具体的方法和代码可以根据后续的内容进行进一步的讨论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值