最近发现很多人产生对称矩阵的方法并不是很好,估计并没有理解对称矩阵的本质。其实对称矩阵没什么可说的可以自行百度。这里有几个关于对称矩阵重要性质要知道:
2. 根据性质3。A=diag(a); 生成一个对角阵A 其中a是一个向量(行向量,列向量结果一样)。
5. 同样我们可以想到如何产生‘对称半正定矩阵’以及‘对称正定矩阵’。具体方法和对比后面会写出来
1. 如果A为对称矩阵则必须保证A为方阵。
2. 对于任何方阵X,X+XT是对称矩阵。(这里就提到了产生对称矩阵的方法)。
3. 对角阵都是对称矩阵。(最简单的对称矩阵)。
根据上述性质可以知道用matlab产生对称矩阵有如下方法:
1. 根据性质2。A=A'+A;
>> A=rand(3);
>> 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. 同样我们可以想到如何产生‘对称半正定矩阵’以及‘对称正定矩阵’。具体方法和对比后面会写出来