matlab 怎样生成一个N*N的对称矩阵,要主对角线的元素为0,其他随意?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 怎样生成一个N*N的对称矩阵,要主对角线的元素为0,其他随意?相关的知识,希望对你有一定的参考价值。

参考技术A 假设n=30.
n=30;
a=zeros(n);
for i=1:n
for j=1:n
if (i~=j)
a(i,j)=rand;
end
end
end
矩阵a就是你要的矩阵追问

谢谢,不过我需要a(i,j)=a(j,i),再加上对角线为0

参考技术B n=10;
a=rand(n,n);
a=(a+a')/2;
for i=1:n
a(i,i)=0;
end
a本回答被提问者采纳

python怎样生成一个随机矩阵

import random #导入随机数模块
m=10
n=10
matrix = [[0 for i in range(m)] for i in range(n)] #定义数组
for row in range(0,m):
   for col in range(0,n):
       matrix[row].append(random.randint(0,101)) #赋值

for row in range(0,m):
     print  matrix[row]#打印

结果

参考技术A

from numpy import random
randArray = random.random(size=(2,4))

#输出
#array([[0.93848018,0.42005976,0.81470729,0.98797783],[0.12242703,0.42756378,0.59705163,0.36619101]])



random函数接收需要生成随机矩阵的形状的元组作为唯一参数。上面的代码将会返回一个两行四列的随机矩阵,随机数的值位于0到1之间,矩阵是numpy.array类型。除了random函数外,还有生成整数随机矩阵的函数randint。



from numpy import random
random.randint(1,100,size=(3,3))

#输出
#array([[74,76,46],[90,16,8],[21,41,31]])

本回答被提问者采纳
参考技术B numpy.random包可以实现这一功能。numpy包是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多,同时该结构也可以用来表示矩阵。
from numpy import random
randArray = random.random(size=(2,4))
random函数接收需要生成随机矩阵的形状的元组作为唯一参数。上面的代码将会返回一个两行四列的随机矩阵,随机数的值位于0到1之间,矩阵是numpy.array类型。除了random函数外,还有生成整数随机矩阵的函数randint等等。

以上是关于matlab 怎样生成一个N*N的对称矩阵,要主对角线的元素为0,其他随意?的主要内容,如果未能解决你的问题,请参考以下文章

请问,怎么用matlab生成一个随机对称的矩阵

matlab 里怎么随机产生一个对称正定矩阵

matlab中怎么定义一个5*6的矩阵,矩阵元素全为c?

在matlab中怎样生成1:375中 所有的整数的乱序。

matlab如何生成对角元素为无穷大,且对称的矩阵

matlab中怎样计算一个矩阵中每个数的平方?