?? ndsort.m
字號:
% 根據各節點跨距對節點重新排序,若跨距相等則考慮相鄰單元內節點編號總和平均值,
% 若再相同考慮含最小節點編號的編號將小,含最大節點編號的編號將大;
function refsh=ndsort(ndm,nnum)
refsh=zeros(nnum,1);
k=1;
while k<=nnum
ndmin=min( ndm(:,1) ); % 查找當前節點跨距最小值;
j=0;
for i=1:nnum
if ndm(i,1)==ndmin
j=j+1;
min_ndist(j)=i; % 記錄當前最小節點跨距值的出現位置min_ndist;
end
end
for i=1:j
ndm( min_ndist(i),1 )=inf; % 將min_ndist處的節點跨距值置大數,下次作比較時將直接跳過;
end
if j>=2 % 若跨距相等,則比較其相鄰單元節點編號總和平均值;
jj=1;
while jj<=j
nsmin=min( ndm(min_ndist,2) ); % 尋找擁有當前最小節點跨距值的節點中其相鄰單元節點編號總和平均值的最小值;
l=0;
for i=1:j
if ndm( min_ndist(i),2 )==nsmin
l=l+1;
min_nsum(l)=min_ndist(i); % 記錄當前最小跨距相等的節點相鄰單元節點編號總和平均值的最小值的出現位置min_nsum;
end
end
for i=1:l
ndm( min_nsum(i),2 )=inf; % 將min_nsum處的節點相鄰單元節點編號總和平均值置大數,下次作比較時將直接跳過;
end
if l>=2 % 若相鄰單元節點編號總和平均值相等,則比較相鄰單元節點編號最小值;
jjj=1;
while jjj<=l
nmmin=min( ndm(min_nsum,3) ); % 尋找擁有當前相鄰單元最小節點編號值;
m=0;
for i=1:l
if ndm( min_nsum(i),3 )==nmmin;
m=m+1;
min_nmin(m)=min_nsum(i); % 記錄當前相鄰單元節點編號最小值的最小值的出現位置min_nmin;
end
end
for i=1:m
ndm( min_nmin(i),3 )=inf; % 將min_nmin處的節點相鄰單元節點編號最小值置大數,下次作比較時將直接跳過;
end
if m>=2
for i=1:m
refsh(k)=min_nmin(i);
k=k+1;
jj=jj+1;
jjj=jjj+1;
end
else
refsh(k)=min_nmin(m);
k=k+1;
jj=jj+1;
jjj=jjj+1;
end
clear min_nmin;
end
else % 否則將此節點位置進行排序到refsh中;
refsh(k)=min_nsum(l);
k=k+1;
jj=jj+1;
end
clear min_nsum;
end
else
refsh(k)=min_ndist(j);
k=k+1;
end
clear min_ndist;
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -