【发布时间】:2020-01-05 16:45:59
【问题描述】:
我想使用满足以下属性的 matlab 编程在 (0, 9) 中生成 100 个大小为 6 x 6 的随机矩阵 A=[a_{ij}]:
1. multiplicative inverse: i.e., a_{ij}=1/a_{ji} for all i,j=1,2,...,6.
2. all entries are positive: i.e., a_{ij}>0 for all i,j=1,2,...,6.
3. all diagonal elements are 1: i.e., a_{ii}=1 for all i=1,2,..,6.
4. transitive: i.e., a_{ih}*a_{hj}=a_{ij} for all i,j,h=1,2,...,6.
到目前为止,我尝试使用 matlab 函数rand(6)*9。但是,我得到了错误的矩阵。我想知道是否有人可以帮助我?
这是我的matlab代码:
clc; clear;
n=6;
m=0;
for i=1:n
for j=1:n
for h=1:n
while m<100 % generate 100 random matrices
A=rand(n)*9; % random matrix in (0,9)
A(i,j)>0; % positive entries
A(i,j)==1/A(j,i); % multiplicative inverse
A(i,h)*A(h,j)==A(i,j); % transitive
if i==j && j==h
A(i,j)==1; % diagonal elements are 1
break;
end
m=m+1;
M{m}=A
end
end
end
end
M{:}
【问题讨论】:
-
为什么要问第二个问题?
-
@Daniel 这是一个不同的问题。有间隔,没有高斯噪声。谢谢。
-
其实所有其他属性都是从transitive属性派生而来的。
-
A(i,j)>0;例如什么都不做 -
两个略有不同的问题,但两者的答案是相同的。选择 4 个值并计算剩余的值 (stackoverflow.com/a/59598776/2732801) 仍然不确定应如何保留随机分布的属性。 Burak 的回答基本相同,但计算出的矩阵元素的值大于 9。