Matlab 三维二值化矩阵处理和可视化
多孔介质数值模拟输入的数据一般是采用三维二值化矩阵,处理和可视化过程总结如下。
多孔介质存在较多锯齿边缘,采用图像膨胀、腐蚀处理或者滤波处理
% 膨胀
B=[0 1 0
1 1 1
0 1 0]; %处理矩阵
A1=imdilate(node,B);%膨胀处理
% 腐蚀
se1=strel('disk',6);
A2=imerode(node,se1);
% 中值滤波
A3 = medfilt3(node);
Matlab绘制三维图
load('./node100.mat')
len =100;wid=100;hig=100;
[x,y,z] = meshgrid(1:wid,1:len,1:hig);
% sx=1:len;sy=1:wid;sz=1:hig;
sx = [1,len];sy=[1,wid];sz=[1,hig];
h=slice(x,y,z,node,sx,sy,sz);
shading interp;
hold on ;
colormap (hot);
hold off;%采用hot色彩
hidden off;%透视效果
三维矩阵node输出为Tecplot可读的node.plt文件
file = './node.plt';
fid = fopen(file,'w+');
fprintf(fid,'VARIABLES=\"x\",\"y\",\"z\",\"node\"\n');
fprintf(fid,'ZONE T=\"BOX\",I=%d,J=%d,K=%d,F=POINT\n',len,wid,hig);
for i = 1:len
for j=1:wid
for k=1:hig
fprintf(fid,'%d %d %d %d\n',i,j,k,A(i,j,k));
end
end
end
posted on 2021-01-18 15:08 MultiSimOpt 阅读(1206) 评论(4) 编辑 收藏 举报