如何在matlab中根据z轴值改变矩阵中的值

如何在matlab中根据z轴值改变矩阵中的值,matlab,matrix,matrix-multiplication,Matlab,Matrix,Matrix Multiplication,我创建了随机连接信息矩阵。由此,我在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('E

我创建了随机连接信息矩阵。由此,我在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. 
%concectivity矩阵
成功=0;
n=输入(“输入节点数”);%矩阵大小
k=输入(“输入最大连接”);%最大1s数
p=0.5;
结果_矩阵=零(n,n);
while(成功==0)
结果_矩阵=(rand(n,n)k
成功=0;p=p/2;%太多的1,减少p
结束
结束
m=结果_矩阵;
连接材料=m;
disp(“连接矩阵”);
disp(m);
[r,c]=find(m);
A=[r,c]
%三维图形
PlotSizex=100;
PlotSizey=100;
PlotSizez=-100;
x=PlotSizex*rand(1,n)
y=PlotSizey*rand(1,n)
z=绘图尺寸z*兰德(1,n)
图三(x(A)。’,y(A)。’,z(A)。’,‘O-’
%Zaxis值与连接性相乘
d=零(n,n);
zaxis的z%值
对于i=1:n
对于j=i+1:n
d(i,j)=z(i);
d(j,i)=d(i,j);
结束
结束
新矩阵=d.*m%d是zaxis值,m是连通矩阵。

我确实在
新矩阵中获得了不同的值

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值相乘很奇怪,因为连接矩阵中的每个元素都与空间中的两个点相关(因此两个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

您可能在最后一行中输入了一个错误,它应该是
new_matrix
(没有空格)。如果您提供一个固定的示例矩阵,您得到的结果和您想要的结果,回答您的问题可能会更容易。我需要将此新矩阵从n更新为0。对于eg:第一次新矩阵:d(i,j)=z(i)*z(j);第二次新矩阵:d(i,j)=z(i)*z(j)/n;第三个新矩阵:d(i,j)=z(i)*z(j)/n-1;。。。直到新矩阵新矩阵:d(i,j)=z(i)*z(j)/0;最终新矩阵应为“所有”。我可以建议。。