如何在matlab中根据z轴值改变矩阵中的值
我创建了随机连接信息矩阵。由此,我在3D图形中绘制了x、y和z轴点。现在我只想在相应的连接性中应用zaxis值,以便在连接性中出现1时,它应该乘以相应的zaxis值(例如:如果在conn矩阵(1,3)中place=1,那么它应该取特定的zaxis值并乘以)。但是我得到了所有地方的相同值。建议如何在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
%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;最终新矩阵应为“所有”。我可以建议。。