matlab导入数据后怎么做三维可视化

作者&投稿:柞卢 (若有异议请与网页底部的电邮联系)
matlab导入数表后怎么会制三维图可视化~

推荐你使用观想报表,可以快速的制作多终端显示的数据可视化,尤其是大屏显示,观向报表系统里面有非常的多图表样式,除了大屏显示,还可以移动端、pc端、大屏等多终端显示,制作图表就像在线ps一样,根据需求对接多种数据库或者本地数据(Excel),快速选择图表样式,调节出自己喜欢的风格(例如蓝色科技感)。注:完全不需要敲代码。而且可以本地部署,可以去试用一下。

13.1 数据基本操作
  本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。
13.1.1 文件的存储
  MATLAB支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。
  1. 保存整个工作区
  选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。
  2. 保存工作区中的变量
  在工作区浏览器中,右击需要保存的变量名,选择Save As…,将该变量保存为MAT文件。
  3. 利用save命令保存
  该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下:
● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为 matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。
● save('filename'):将工作区中的所有变量保存为文件,文件名由filename指定。如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。
● save('filename', 'var1', 'var2', ...):保存指定的变量在 filename 指定的文件中。
● save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。
● save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体s中的指定变量。
● save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量需满足的条件。
● save('..., 'format'),指定保存文件的格式,格式可以为MAT文件、ASCII文件等。
13.1.2 数据导入
  MATLAB中导入数据通常由函数load实现,该函数的用法如下:
● load:如果matlab.mat文件存在,导入matlab.mat中的所有变量,如果不存在,则返回error。
● load filename:将filename中的全部变量导入到工作区中。
● load filename X Y Z ...:将filename中的变量X、Y、Z等导入到工作区中,如果是MAT文件,在指定变量时可以使用通配符“*”。
● load filename -regexp expr1 expr2 ...:通过正则表达式指定需要导入的变量。
● load -ascii filename:无论输入文件名是否包含有扩展名,将其以ASCII格式导入;如果指定的文件不是数字文本,则返回error。
● load -mat filename:无论输入文件名是否包含有扩展名,将其以mat格式导入;如果指定的文件不是MAT文件,则返回error。

考查如下三维立体图形的性质
V=v=f(x,y,z)=(x+y+z)(xy+xz+yz)-10xyz
当V取不同值时,会对应不同的[b][color=red]曲面图形[/color][/b],但是假如说我们将V取为[b][color=red]一个区间的连续值[/color][/b]时,那么就得到了一个由许多曲面构成的[b][color=red]三维立体[/color][/b]了
我们现在感兴趣的就是那个由许多曲面组成的[b][color=red]三维立体[/color][/b],因为Matlab为它们提供了相关的直接的函数
但是有时我们不对整个立体感兴趣,[b][color=red]只对某个曲面感兴趣[/color][/b],问题就出在这里,Matlab中[b][color=red]没有提供[/color][/b]三维隐函数绘图的直接函数,但是我们可以间接的获得,那就是从立体中截取出某个我们感兴趣的曲面,[color=blue]这就是说Matlab对三维曲面的可视化(特别是隐式的)必须先立体化处理,然后再截取我们感兴趣的[/color]
下面我们看一个利用上面提到的标量函数构建立体图形的例子。首先,我们必须生成一个构建立体对象的坐标系:
[code]x=0:0.5:10;
y=x;
z=x;
[X,Y,Z]=meshgrid(x,y,z);[/code]
上面的代码演示使用meshgrid函数在三维空间中的应用。其中XYZ为定义栅格的3个三维数组,它们是由xyz经过三维栅格扩展形成的。也就是说,X是将x复制扩展成具有length(y)行和length(z)页的三维数组;Y是先将y转置为一个列向量,然后复制扩展成为具有length(x)列和length(z)页的三维数组;Z则是先将z转换为1×1×length(z)的三维向量,然后扩展成为length(y)行和length(x)列的三维数组。
下面我们还需要定义一个以三维数组为自变量的标量函数V:
[code]V=(X+Y+Z).*(X.*Y+X.*Z+Y.*Z)-10*X.*Y.*Z;[/code]
好,[b][color=blue]这就得到立体可视化的需要的数据X、Y、Z和V了[/color][/b],下面就是对我们感兴趣的部分或者曲面进行可视化和处理了

三维立体截面图
在2#中我们利用标量函数v=f(x,y,z)=(x+y+z)(xy+xz+yz)-10xyz定义一个立体对象,并准备所需的所有数据,为了使该立体对象可视化,我们可以利用下面的命令查看该立体对象的一些截面。
V=(x+y+z)(xy+xz+yz)-10xyz=0的图形大概如下:
[align=center][attach]1187[/attach][/align]
[align=center][attach]1188[/attach][/align]
[align=center][b][size=5][color=blue]三维立体平面截取[/color][/size][/b][/align][code]slice(X,Y,Z,V,[6 8],[5 9],[3 5])%截取x=6和8,y=5和9,z=3和5等6个截面视图
xlabel('x')
ylabel('y')
zlabel('z')[/code]
[align=center][attach]1184[/attach][/align]
从图中我们可以看到命令为我们截取x=6和8,y=5和9,z=3和5等6个截面视图,注意图中的颜色是根据V的自动绘制的。
[align=center][b][size=5][color=blue]立体三维曲面截取[/color][/size][/b][/align]
在上面我们演示了立体图形的平面截面,在立体图像中,也可以显示立体图形的曲面截面。[code][xs,ys]=meshgrid(x,y);
zs=sin(-xs+ys/2);
slice(X,Y,Z,V,xs,ys,zs)%采用正弦函数截取立体图形的截面,也就是截取满足方程z=sin(-x+y/2)的曲面
xlabel('x')
ylabel('y')
zlabel('z')
[/code][align=center][attach]1185[/attach][/align]
[align=center][b][size=5][color=blue]截面等高线绘制[/color][/size][/b][/align]
除了截图平面和曲面以外,还可以使用contourslice函数为截取的平面添加等高线[code]slice(X,Y,Z,V,[7 3],[5 9],[3 5])
hold on
h=contourslice(X,Y,Z,V,7,[5 9],5);%在x=7,y=5和9,z=5截面上添加等高线
set(h,'edgecolor','k','linewidth',1.5)%设置等高线的的颜色和线宽
xlabel('x')
ylabel('y')
zlabel('z')[/code][align=center][attach]1189[/attach][/align]

三维立体等值面图——三维隐函数绘图
我们总是骂mathworks真是该死,什么函数只要能想得到的就一定有,可以却偏偏没有提供三维隐函数的绘图
呵呵其实,Matlab虽然没有提供直接的绘制三维隐函数图形的函数,但是我们可以使用[b][color=Red]等值面[/color][/b]图来绘制
[b][color=Blue][size=4]所谓等值面图[/size][/color][/b],就是V=f(X,Y,Z)=C,这个C的值确定的时候的曲面图形,它只是三维立体V中的一个曲面而=,相当于3#的截取了一个特殊的曲面而已
除了查看立体对象的截面之外,寻找使V等于某个特定值的表面(等值面),也十分常见。在Matlab中,这以操作可以使用isosurface()函数来实现,该函数与delaunay函数类似,也是返回若干三角形的顶点。将isosurface函数返回的参数传递给patch函数,就可以绘制出有这些三角形构成的等值面了。[code][X,Y,Z,V]=flow(13);
fv=isosurface(X,Y,Z,V,-2);%显示V=-2等等值面
subplot(121)
p=patch(fv);
set(p,'facecolor',[0.5 0.5 0.5],'edgecolor','k');
view(3)
axis equal tight
grid on
subplot(122)
p=patch(shrinkfaces(fv,0.3));%shrinkfaces功能是使表面收缩
set(p,'facecolor',[0.5 0.5 0.5],'edgecolor','k');
view(3)
axis equal tight
grid on[/code][align=center][attach]1190[/attach][/align]
当我们显示的立体图形仅仅是为了观察大体结构时,就没有必要针对所有的数据点作图,因为数据点太多会降低显示速度。[color=Blue]利用Matlab中的reducevolume()和reducepatch()函数可以使用图形在显示之前删除一些数据点或者对一些图形显示影响很小的碎片,从而提高图形显示效率[/color]。
再比如说,我们要绘制三维隐函数x^2+y^2+z^2=5的球体的图形,由于Matlab没有提供直接的绘制三维隐函数图形的函数,故我们只能通过三维立体的等值面来截取,虽然绘制等值面比较麻烦且得到的图形不是很漂亮,但至少比没有好
[b]1、构建三维立体模型[/b]
V=X^2+Y^2+Z^2-5;
[b]2、获取三维立体数据[/b][code][X,Y,Z]=meshgrid(-10:0.5:10);
V=X.^2+Y.^2+Z.^2-5;[/code][b]3、绘制等值面[/b][code]%x^2+y^2+z^2=5相当于V=0的等值面
fv=isosurface(X,Y,Z,V,0);%显示V=0等等值面
p=patch(fv);
set(p,'FaceColor','red','EdgeColor','none');%设置图形的相关属性
view(3)
camlight
lighting gouraud
axis equal tight[/code][align=center][attach]1191[/attach][/align]

三维立体数据平滑化
三维数据也可以通过smooth3()函数来过滤而实现其平滑化[code]data=rand(10,10,10);
datas=smooth3(data,'box',3);%box是光滑方法,Matlab中提供可好几种方法,具体查看帮助
subplot(121)
p=patch(isosurface(data,0.5));
patch(isocaps(data,0.5));
isonormals(data,p);
camlight
lighting phong
axis vis3d off
view(3)
subplot(122)
p=patch(isosurface(datas,0.5));
patch(isocaps(datas,0.5));
isonormals(datas,p);
camlight
lighting phong
axis vis3d off
view(3)[/code]上面用到的isocaps和isonormals函数的用法如下:
isocaps生成块状图的外层表面,而isonormals调整所画碎片的属性,使所显示的图形有正确的光照效果
[align=center][attach]1192[/attach][/align]

1.平面分图位置函数 subplot(nmj) 其中:n行 m列j编号
2.二维直角坐标符号函数绘图
(1)ezplot(f,[x1,x2])
f:含单变量的符号函数
x1,x2:自变量的取值范围,默认值为[-2pi,2pi]
(2)ezplot(‘u(x,y)’,[x1,x2],[y1,y2])
两变量隐含数u(x,y)=0
[x1,x2],[y1,y2]表示两个变量的取值范围
(3)ezplot(x,y,[t1,t2])
x=f(t),y=g(t)是参数方程
t1,t2:参变量的取值范围(exno25t)
exno25t:
f=sym('x^2+1')
subplot(221)
ezplot(f,[-2,+2])
subplot(222)
ezplot('y-x^2-1',[-2,+2],[0,10])
x=sym('cos(t)')
y=sym('sin(t)')
subplot(223)
ezplot(x,y)


请问matlab中如何导入大量的数组数据
1.将数据存在文件里(可以是写字板,.txt文本,Excel或者其他的数据文件)2.打开file\/Import Data (假设文件名为test)3.出现Import Wizard 对话框,点击next,finish 4.在Matlab的workspace窗口中出现变量名test,右击选save as,将数据以*.mat存放在你需要的位置 以后调用只需在对应的路径下,load ...

怎么用matlab函数load导入数据
直接载入数据,将数据文件存放到工作空间里面,然后再Current Folder里面双击x.mat,matlab会自动加载该数据文件 实际上上面的方法使用了load命令 load(filename)打开matlab,将当前工作空间指向相应的数据存放文件夹,然后在command window中输入load(filename)导入文件,这里以load(‘SA.mat’)为例 如果...

matlab中怎样将excle数据导入,具体的方法是怎样?
num:保存数据 txt:保存字符。用 help xlsread 可以查到它的使用方法:EXAMPLES:1. Default operation:NUMERIC = xlsread(FILE);[NUMERIC,TXT]=xlsread(FILE);[NUMERIC,TXT,RAW]=xlsread(FILE);2. Get data from the default region:NUMERIC = xlsread('c:\\matlab\\work\\myspreadsheet')3. Get ...

matlab中怎么使用导入的数据
详情请查看视频回答

在mat lab中导入数据后如何求得第一列和第二列的函数关系
在MATLAB中导入数据后,可以使用各种方法来分析和求取第一列和第二列的函数关系。以下是一种常见的方法:1. 首先,确保你已经导入了数据并将其保存在一个矩阵或数组中,假设你将数据保存在名为`data`的变量中。2. 使用索引来获取第一列和第二列的数据,假设第一列存储在`data(:, 1)`中,第二...

如何将Excel数据导入MATLAB中
工具:Excel数据文件(格式xls或xlsx)、MATLAB 7.x + 步骤:1、打开Excel数据文件(格式xls或xlsx),注意行列要跟原矩阵一一对应。2、运行MATLAB程序,点击Import Data工具。3、打开数据文件(B.xls)。4、选择“Matrix(矩阵)”,点击工具栏右侧的“勾”,导入数据。5、关闭“Import”窗口,回到...

matlab求波峰波谷怎么设置上限值和下限制,利用MATLAB怎么导入数据求波峰...
MATLAB中可以使用 `findpeaks` 和 `findpeaks` 函数来快速寻找信号中的波峰和波谷。这两个函数可以设置一定的阈值来筛选波峰和波谷的位置。下面是一个简单的代码示例,演示如何使用这两个函数来寻找信号中的波峰和波谷,并设置上限值和下限制。```matlab 导入数据 data = importdata('data.txt'); % ...

matlab如何导入dat数据
1、先把数据保存为dat文件。2、使用fscanf命令调用,格式为:fid=fopen('*dat','r');z=fscanf(fid,'%g');status=fclose(fid)。(间接导入)

matlab 怎样批量导入txt数据格式
]); %定义变量 syms(['b',num2str(i)]); %定义变量 eval(['A',num2str(i),'=importdata(''',num2str(i),'A.txt'');']); %读取数据文件 eval(['b',num2str(i),'=importdata(''',num2str(i),'b.txt'');']); %读取数据文件 end 这样100个数据文件就读入了matlab中。

matlab把这样的数据导入到数组里
首先使用textread函数读入,然后根据前面的数据把后面的数据进行整理,使用reshape函数进行重构矩阵

绥滨县13126102702: 给了data文件 如何用 Matlab 做三维图 -
令宣舍雷: 最简单的是plot3函数,有三个参数,分别传递的是x,y,z轴坐标 举个简单的例子,t是0到10*pi的变量,x=sint,y=cost,z=t.则 程序如下,你可以试试 t=0:pi/50:10*pi; plot3(sin(t),cos(t),t)

绥滨县13126102702: 如何将excel中数据导入matlab然后画出三维视图 -
令宣舍雷: 比如excel的表名为:数据.xls 将这个表里面的数据赋值给矩阵a 命令:a=xlsread('数据') 要实现上面的命令还需要将excel表放到matlab的工作路径中.还有将matlab中的矩阵导入到excel中,excel的表名为:数据xls.以矩阵b为例:至于三维图 命令比较多 可以参考matlab书籍

绥滨县13126102702: matlab从文件中导入三维数据进行三维重建 -
令宣舍雷: 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开. 13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入.保存工作区可以通过菜单...

绥滨县13126102702: matlab 如何对表列数据绘制三维图形?具体看描述
令宣舍雷: 这种图是用mesh命令画出来的(也可以查surf) 另外,在使用matlab的此类画图命令时,你需要对坐标进行栅格化,命令是meshgrid 你可以help一下这两个命令,有问题再留言

绥滨县13126102702: 如何使用MATLAB对任意三维数据绘制三维曲面 -
令宣舍雷: 方法:将两组数据运用拟合的方法得到关于第三组数据的回归方程,通过回归方程和meshgrid扩充数据点. 工具:Matlab2011a 实例: (1)数据列: K/NM/° C/NMS/° At/NM 10 0.1 128 20 0.2 260 30 0.3 393 40 0.4 531 50 0.5 672 60 0.6 815 ...

绥滨县13126102702: matlab如何用3组数据绘制三维曲面 -
令宣舍雷: 3组数据就是曲面的x,y,z坐标,程序根据要求不同而异,程序可这样写: [x,y,z]=meshgrid(linspace(-5,5)); val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3;%isosurface(x,y,z,val,0) p = patch(isosurface(x,y,z,val,0)); isonormals(x,y,z,val,p) ...

绥滨县13126102702: 已有点数据,如何用matlab绘制三维图将各个点连接起来 -
令宣舍雷: 就是用plot3 比如绘制一条三维螺旋线: t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t); 下面这个是用mesh绘制了一个三维曲面

绥滨县13126102702: 导入数据后 matlab 中三维坐标怎那么画 -
令宣舍雷: plot(x,y,z)

绥滨县13126102702: 请问matlab 如何读取excel里的数据,并绘制出三维的图形.excel里数据是已知的. -
令宣舍雷: matlab如何读取excel里的数据,并绘制出三维的图形.解决方法: 1. 将Excel导入matlab,这主要用到xlsread,详细用法请查看help xlsread. 2. 画图,这个要看看,你是画线,还是画面. 3. 如果画线,请查看help plot3. 4. 如果是画面,请查看...

绥滨县13126102702: 已知三列数据的文本文件,如何用Matlab画三维图? -
令宣舍雷: 用surf(x,y,z)函数x,y,z分别代表三列数据或者三个矩阵(大小必须一样),就能画出你所要的三维图了.Matlab MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室). 是由美国mathworks公司发布的主要面对科学计算、可视...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网