function [VertexData,FVCD,isBinary]=stl2matlab(stlfile)
% STL2MATLAB reads STL-file, ASCII or binary format, into Matlab
%
% Usage:
%
% [VertexData, FVCD]=stl2matlab(stlfile)
%
% Input:
%
% stlfile - STL-file
%
% Output:
%
% VertexData - Cellarray containing matrices with vertices
% FVCD - FaceVertexColorData
% isBinary - Flag with STL-file information
%
% To plot the STL-object use plotSTL(VertexData) or plotSTL(VertexData,FVCD)
%
% m-file can be downloaded at
% http://www.mathworks.com/matlabcentral/fileexchange/13253-iges-toolbox
%
% written by Per Bergstrm --
% if nargin ==
warning('No STL-file is specified');
end VertexData=cell(,); try % Try to read an STL ASCII file
[VertexData{}, VertexData{}, VertexData{}, FVCD] = stlAread(stlfile);
isBinary=false; catch try % Try to read an STL binary file
[VertexData{}, VertexData{}, VertexData{}, FVCD] = stlBread(stlfile);
isBinary=true; catch error('File could not be read!') end end function [X, Y, Z, FVCD] = stlAread(stlfile)
% Reads an STL ASCII file fid=fopen(stlfile,'r'); fileTitle=sscanf(fgetl(fid),'%*s %s'); vnum=;
fclr=;
testASCII=true;
lineCount=; while feof(fid) ==
stlLine=fgetl(fid);
keyWord=sscanf(stlLine,'%s');
if strncmpi(keyWord,'c',) == ;
fclr=sscanf(stlLine,'%*s %f %f %f');
elseif strncmpi(keyWord,'v',) == ;
vnum=vnum+;
vertex(:,vnum)=sscanf(stlLine,'%*s %f %f %f');
clr(:,vnum)=fclr;
elseif testASCII
lineCount=lineCount+;
if lineCount>
if vnum>
testASCII=false;
else
error('File is not an STL ASCII file!')
end
end
end
end X=[vertex(,::end);vertex(,::end);vertex(,::end)];
Y=[vertex(,::end);vertex(,::end);vertex(,::end)];
Z=[vertex(,::end);vertex(,::end);vertex(,::end)]; FVCD=reshape(clr,,vnum/); fclose(fid); function [X, Y, Z, FVCD] = stlBread(stlfile)
% Reads an STL binary file fid=fopen(stlfile,'r'); fileTitle=fread(fid,,'uchar=>schar');
fnum=fread(fid,,'int32'); X=zeros(,fnum);
Y=zeros(,fnum);
Z=zeros(,fnum); FVCD=uint8(zeros(,fnum)); for i=:fnum,
normal=fread(fid,,'float32');
vertex1=fread(fid,,'float32');
vertex2=fread(fid,,'float32');
vertex3=fread(fid,,'float32');
clr=fread(fid,,'uint16');
if bitget(clr,)==
rd=bitshift(bitand(,clr),-);
grn=bitshift(bitand(,clr),-);
bl=bitand(,clr);
FVCD(:,i)=[rd;grn;bl];
end
X(:,i)=[vertex1(); vertex2(); vertex3()];
Y(:,i)=[vertex1(); vertex2(); vertex3()];
Z(:,i)=[vertex1(); vertex2(); vertex3()];
end fclose(fid);

把这个函数放到Matlab中去,然后

b = figure();
model = stl2matlab('rawmodel-983.stl');
patch(model{},model{},model{},'b');
axis equal;
view(,);
mesh(x, y,z);
title('topographie map')

具体什么原理不太懂,反正这样真的可以

就是图丑了一点2333333333333333333

如何用MATLAB读stl并显示点云文件的更多相关文章

  1. Java使用FileReader(file)、readLine()读取文件,以行为单位,一次读一行,一直读到null时结束,每读一行都显示行号。

    //Java使用FileReader(file).readLine()读取文件,以行为单位,一次读一行,一直读到null时结束,每读一行都显示行号. public static void readFi ...

  2. 如何解决 Matlab 画图时中文显示乱码的问题?

    使用的是win10系统,从前几个月某一天,我的matlab的figure里的中文都变成了口口.很是郁闷,还以为是动到了什么配置引起的. 前几天更新了matlab 2018b,发现还有这个问题.就觉得不 ...

  3. matlab中的输出显示函数

    matlab中的输出显示函数 在matlab中使用的显示函数有disp.sprintf.fprintf比较常用.下面来介绍一下他们的用法. 1.disp()函数: disp(x)主要是用来输出变量x的 ...

  4. Matlab 用fread、fwrite实现大文件读写

    最近在分析一个35G的大数据文件,猛一看,是不是很吓人啊,不过还好,师兄写文件的格式非常规范,读取数据来也就很方便了,主要是使用了读写文件的两个函数fread和fwrite,下面用matlab简单尝试 ...

  5. Matlab中调用VS编译的exe文件并传递变量 的方法

    经历::在网上找了很多方法,都没有实现在matlab中调用vs的exe文件并且能够传递变量参数,一些小细节花费了自己很多时间,比喻忽略了一些空格!  网上很多的方法都是纯粹复制别人的方法,自己都没有去 ...

  6. Visual Studio 打开解决方案后 弹出框显示 "正在打开文件..." 迟迟没反应 的解决方法

    Visual Studio 打开解决方案后 弹出框显示 "正在打开文件...",任务管理器的devenv进程又很正常,不会显示"未响应". 而IDE的左下角有个 ...

  7. vim——打开多个文件、同时显示多个文件、在文件之间切换

    打开多个文件: 1.vim还没有启动的时候: 在终端里输入  vim file1 file2 ... filen便可以打开所有想要打开的文件 2.vim已经启动 输入 :open file 可以再打开 ...

  8. PCL Show Point Cloud 显示点云

    在使用PCL库的时候,经常需要显示点云,可以用下面这段代码: #include <pcl/visualization/cloud_viewer.h> pcl::PointCloud< ...

  9. 在xcode运行编译时,编译成功,但项目中显示缺少该文件,这是只要关闭重启xcode即可。

    在xcode运行编译时,编译成功,但项目中显示缺少该文件,这是只要关闭重启xcode即可.

随机推荐

  1. VS2017编译GDAL(64bit)+解决C#读取Shp数据中文路径的问题

    编译GDAL过程比较繁琐,查阅了网上相关资料,同时通过实践,完成GDAL的编译,同时解决了SHP数据中文路径及中文字段乱码的问题,本文以“gdal-2.3.2”版本为例阐述整个编译过程. 一.编译准备 ...

  2. spring jpa方法关键字转成sql

    The following table describes the keywords supported for JPA and what a method containing that keywo ...

  3. PAT 乙级 1080 MOOC期终成绩 (25 分)

    1080 MOOC期终成绩 (25 分) 对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的 ...

  4. nodejs静态web服务

    项目准备 Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的 ...

  5. TensorFlow-GPU+cuda8+cudnn6+anaconda安装遇到的版本错误

    第一遍装的时候是cuda10+cudnn5.1这个诡异的组合,失败 卸载cuda就是把所有的NVIDIA有关的应用都删掉,c盘文件也都删掉,不用留. 第二遍是cuda8+cudnn5.1.版本还是对不 ...

  6. dubbo 在不同协议下携带上下文区别

    如果走原生的dubbo协议,RpcContext.getContext()里的attarchments和values 是能够在节点间传递的 但如果hessian协议,attarchments和valu ...

  7. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  8. WPF 和 百度 eChart 交互

    https://blog.csdn.net/defrt4/article/details/52689052

  9. docker(ce) on Ubuntu

    Note: # - requires given linux commands to be executed with root privileges either directly as a roo ...

  10. Windows Unity ARKit发布到IOS相关设置及错误解决

    Windows 版Unity安装: 考虑到在虚拟机中运行Unity比较卡,所以采用在Windows Unity上将项目发布好然后再复制到Mac虚拟机中通过XCode进行编译的方式. Unity版本为 ...