如何根据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