matlab如何显示三维体数据
来源:互联网 发布:逐点比较圆弧插补vb 编辑:程序博客网 时间:2024/05/17 03:07
在显示三维体图像的时候,我们一般都用专业软件来显示,这样有时候挺麻烦的,最近整理了一个关于matlab显示三维体的程序;
首先我们先实现一个读取bin二进制文件的matlab函数GetBin3DData;
%%%FileName为二进制文件的位置,InLineLen,CrossLineLen,SampleLineLen为三维体的三个方向的维度,Vol为三维体的大小
function Vol = GetBin3DData(FileName,InLineLen,CrossLineLen,SampleLineLen)
Vol = zeros(InLineLen,CrossLineLen,SampleLineLen);%返回三维数据体
fid = fopen(FileName);
for i = 1:1:InLineLen
for j = 1:1:CrossLineLen
if(i == InLineLen && j == CrossLineLen)
return;
end
[Vol(i,j,:) nCount] = fread(fid,SampleLineLen,'float');
if(nCount ~= SampleLineLen)
fprintf('读取三维数据错误! 请检查!');
end
end
end
fclose(fid);
end
% function Vec = GetBin3DData(FileName,InLineLen,CrossLineLen)
% Vec = zeros(InLineLen,CrossLineLen);%返回二维数据体
% fid = fopen(FileName,'r');
% for i = 1:1:InLineLen
% [Vec(i,:) nCount] = fread(fid,CrossLineLen,'double');
% if(nCount ~= CrossLineLen)
% fprintf('读取二维数据错误! 请检查!');
% end
% end
% fclose(fid);
% end
以上为主要函数
FileName = 'data.bin'
InLine = 200;
CroLine = 200;
TimeLine = 51;
Vol = GetBin3DData(FileName,InLine,CroLine,TimeLine);
x = 1 : InLine;
y = 1 : CroLine;
z = 1 : TimeLine;
temp = Vol;
x = 1 : InLine;
y = 1 : CroLine;
z = 1 : TimeLine;
V3D_FIGUREID=figure();
axis equal;
V3D_AXESID=cla;
% 3D-View
view(3);
% Eigenschaften der Achsen setzen
set(V3D_AXESID,'Layer','top'); % Achsen 黚er Grafik zeichnen
set(V3D_AXESID,'Box','on'); % Achsen-Box an
cmin=min(temp(:));
cmax=max(temp(:));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%显示三维地震图
hold on
V3D_SLICE = slice(temp,x,y,z);
set(V3D_SLICE,'FaceColor','interp');
set(V3D_SLICE,'EdgeColor','interp');
set(V3D_SLICE,'FaceLighting','none');
set(V3D_SLICE,'Tag','V3D:SLICE');
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%显示切面,其中Xslice,Yslice,Zslice为切面维度
delete(findobj(V3D_FIGUREID,'Tag','V3D:SLICE'));
figure(V3D_FIGUREID);
hold on
Xslice = 1;
Yslice = [];
Zslice = 20;
V3D_SLICE = slice(x,y,z,temp,Xslice,Yslice,Zslice,'linear');
set(V3D_SLICE,'FaceColor','interp');
set(V3D_SLICE,'EdgeColor','interp');
set(V3D_SLICE,'FaceLighting','none');
set(V3D_SLICE,'FaceAlpha','interp');
set(V3D_SLICE,'EdgeAlpha','interp');
set(V3D_SLICE,'Tag','V3D:SLICE');
slud.method = 1;
slud.EdgeColor = 'interp';
slud.EdgeColor_value = 11;
slud.facecolor = 'interp';
slud.facecolor_value = 11;
slud.lighting = 1;
slud.alpha_single = 1;
slud.alpha = 3;
slud.x = Xslice;
slud.y = Yslice;
slud.z = Zslice;
set(V3D_SLICE,'userdata',slud);
if (slud.alpha==2 | slud.alpha==3)
temp=findobj(V3D_FIGUREID,'Tag','V3D:SLICE');
for i=1:length(temp)
set(temp(i),'AlphaData',get(temp(i),'CData'));
end
end
% set(V3D_SLICE,'EdgeLighting','none');
%
% set(V3D_SLICE,'FaceAlpha','interp');
% set(V3D_SLICE,'EdgeAlpha','interp');
% set(V3D_SLICE,'Tag','V3D:SLICE');
% % set(V3D_SLICE,'userdata',objud);
% % alpha('color');
% alphamap('increase',1);
%
% % Colorbar setzen
% % V3D_COLORBAR=colorbar;
% % set(V3D_COLORBAR,'Tag','V3D:COLORBAR');
%
% % Minimum und Maximum Color setzen
% set(V3D_AXESID,'CLim',[cmin cmax]);
hold off
%%%%这是三维体数据
%%%%%这是显示三维切面的样子
- matlab如何显示三维体数据
- Matlab怎样令三维抽象数据可视化的显示出来
- matlab三维数据绘图
- matlab二维图片三维显示
- Matlab显示图像三维信息
- 【matlab】:matlab中如何三维画球?
- Matlab Simulink中三维图形的显示
- Matlab中三维直方图的显示方法
- C++调用matlab三维显示mesh/surf
- matlab 显示一张图片到三维坐标
- 【Matlab】三维数据差值 查表 拟合
- matlab读三维txt数据并绘图
- Matlab数据的可视化 -- 三维特殊图形
- Matlab数据的可视化 -- 三维网格图形
- Matlab数据的可视化 -- 三维表面图
- matlab画三维图、提取excel数据
- 一分钟了解“Matlab绘图三维数据”
- 数值分析Matlab三维数据网格图
- Struts2对JXLS支持及JXLS的应用
- 辞职后五险一金怎么处理?收藏下来吧~早晚用得到
- SpringMVC学习笔记--文件上传与MultipartResolver
- C++笔记
- 狼行天下 狼性法则
- matlab如何显示三维体数据
- 修改SVN项目日志
- 使用handler时的warning:ThisHandlerclassshouldbestaticorleaksmightoccur
- 可是后来我们都把对方弄丢了
- Debian/Ubuntu Linux:使用Hostapd搭建无线访问点(WAP)
- [hdoj]2006
- 异步查询数据库,CursorAdapter
- linux平台中socket通信程序的编写
- 黑马程序员_IOS内存管理学习总结(一)