如何根据matlab中的z轴值改变矩阵中的值
How to vary the values in the matrix according to z axis value in matlab
我创建了随机连接信息矩阵。由此我在 3D 图形中绘制了 x、y 和 z 轴点。现在我只想在相应的连接中应用 zaxis 值,这样在连接中出现 1 的地方应该乘以相应的 zaxis 值(例如:如果在 conn 矩阵 (1,3)place =1 中,它应该采用特定的 zaxis 值并相乘)。但是我在所有地方都得到了相同的值。建议。
%Conncectivity Matrix
success = 0;
n = input('Enter the No. of Nodes'); %size of matrix
k = input('Enter the max connectivity'); %maximal number of 1s
p = 0.5;
Result_Matrix = zeros(n,n);
while (success == 0)
Result_Matrix = (rand(n,n) < p);
Result_Matrix(logical(eye(n))) = 0;
Result_Matrix = max(Result_Matrix, Result_Matrix');
s = sum(Result_Matrix,1);
success = 1;
if min(s) == 0
success = 0; p = p*2; % too few 1s, increase p
end
if max(s) > k
success = 0; p = p/2; % too many 1s, decrease p
end
end
m=Result_Matrix;
conn_mat=m;
disp('connection matrix');
disp(m);
[r,c] = find(m);
A = [r,c]
%3D-GRAPH
PlotSizex=100;
PlotSizey=100;
PlotSizez=-100;
x=PlotSizex*rand(1,n)
y=PlotSizey*rand(1,n)
z=PlotSizez*rand(1,n)
plot3(x(A).', y(A).',z(A).', 'O-')
%Zaxis values multiply with Connectivity
d=zeros(n,n);
z % values of zaxis
for i=1:n
for j=i+1:n
d(i,j)= z(i);
d(j,i)=d(i,j);
end
end
New matrix= d.*m %d is zaxis values and m is connectivity matrix.
我确实在 new_matrix
中获得了不同的值:
new_matrix =
0 -63.4303 -63.4303 0 0
-63.4303 0 0 -23.9408 0
-63.4303 0 0 -24.5725 0
0 -23.9408 -24.5725 0 -76.5436
0 0 0 -76.5436 0
我的连接矩阵是:
connection matrix
0 1 1 0 0
1 0 0 1 0
1 0 0 1 0
0 1 1 0 1
0 0 0 1 0
z 值是:
z =
-63.4303 -23.9408 -24.5725 -76.5436 -86.3677
我觉得将连接矩阵中的元素与单个 z 值相乘很奇怪,因为连接矩阵中的每个元素都与 space 中的两个点相关(因此有两个 z 值)。因此,使用以下内容更有意义:
for i=1:n
for j=i:n
d(i,j)= z(i)*z(j); % or another combination of z(i) and z(j)
d(j,i)=d(i,j);
end
end
我创建了随机连接信息矩阵。由此我在 3D 图形中绘制了 x、y 和 z 轴点。现在我只想在相应的连接中应用 zaxis 值,这样在连接中出现 1 的地方应该乘以相应的 zaxis 值(例如:如果在 conn 矩阵 (1,3)place =1 中,它应该采用特定的 zaxis 值并相乘)。但是我在所有地方都得到了相同的值。建议。
%Conncectivity Matrix
success = 0;
n = input('Enter the No. of Nodes'); %size of matrix
k = input('Enter the max connectivity'); %maximal number of 1s
p = 0.5;
Result_Matrix = zeros(n,n);
while (success == 0)
Result_Matrix = (rand(n,n) < p);
Result_Matrix(logical(eye(n))) = 0;
Result_Matrix = max(Result_Matrix, Result_Matrix');
s = sum(Result_Matrix,1);
success = 1;
if min(s) == 0
success = 0; p = p*2; % too few 1s, increase p
end
if max(s) > k
success = 0; p = p/2; % too many 1s, decrease p
end
end
m=Result_Matrix;
conn_mat=m;
disp('connection matrix');
disp(m);
[r,c] = find(m);
A = [r,c]
%3D-GRAPH
PlotSizex=100;
PlotSizey=100;
PlotSizez=-100;
x=PlotSizex*rand(1,n)
y=PlotSizey*rand(1,n)
z=PlotSizez*rand(1,n)
plot3(x(A).', y(A).',z(A).', 'O-')
%Zaxis values multiply with Connectivity
d=zeros(n,n);
z % values of zaxis
for i=1:n
for j=i+1:n
d(i,j)= z(i);
d(j,i)=d(i,j);
end
end
New matrix= d.*m %d is zaxis values and m is connectivity matrix.
我确实在 new_matrix
中获得了不同的值:
new_matrix =
0 -63.4303 -63.4303 0 0
-63.4303 0 0 -23.9408 0
-63.4303 0 0 -24.5725 0
0 -23.9408 -24.5725 0 -76.5436
0 0 0 -76.5436 0
我的连接矩阵是:
connection matrix
0 1 1 0 0
1 0 0 1 0
1 0 0 1 0
0 1 1 0 1
0 0 0 1 0
z 值是:
z =
-63.4303 -23.9408 -24.5725 -76.5436 -86.3677
我觉得将连接矩阵中的元素与单个 z 值相乘很奇怪,因为连接矩阵中的每个元素都与 space 中的两个点相关(因此有两个 z 值)。因此,使用以下内容更有意义:
for i=1:n
for j=i:n
d(i,j)= z(i)*z(j); % or another combination of z(i) and z(j)
d(j,i)=d(i,j);
end
end