文件交换

图像缩略图

vtkwrite:以VTK文件格式导出各种2D/3D数据到ParaView

版本2.3.0.0(5.46 kB) CY Y.
导出2D / 3D图像卷,矢量字段,表面,线路,多边形等到Paraview

79下载

更新2016年10月3日

来自GitHub.

查看版本历史记录

在github上查看许可证

Paraview是一种强大的开源软件,可用于可视化大3D数据集。它提供了更多的选项,细节和比内置MATLAB 3D可视化模块更好的性能。此功能是将关于将3D数据导出到VTK格式的上述次函数的集成。该函数可以将多个向量和标量字段保存为在帕划线中查看的单个VTK格式的文件。它也可以导出行或多边形对象。为了最大限度地提高不同操作系统之间的兼容性,默认情况下,数值数据以ASCII格式保存,精度为小数点后面的3位数。用户可以指定精度,例如,vtkwrite('执行','结构_points','mri',d,'precision,5),而不是vtkwrite('执行','结构化_points','mri',d)。用户还可以选择以“浮动”数据类型保存数值数据(此选项不适用于PolyData DataSet类型)通过将“二进制”添加到命令,例如,vtkwrite('执行','结构_points','mri',d,二进制)。
以下是一些示例用法。只需输入以下代码。
示例1:导出3D阵列(典型的图像卷)

负载核磁共振
d =挤压(d);
vtkwrite('mri.vtk','structified_points','mri',d)

如果您已经设置了系统路径以包含包含段段二进制文件的文件夹,则可以直接调用PARAVIEW:

vtkwrite('执行','结构_points','mri',d)

在这种情况下,将保存名为“matlab_export.vtk”的文件并传递给paraview。

示例2:出口3D矢量和标量字段

风荷载
[cu,cv,cw] = x, y, z, u, v, w;
Div =散度(x, y, z, u, v, w);
vtkwrite('wind.vtk','structified_grid',x,y,z,...
'vectors', 'vector_field', u, v, w, 'vectors', '涡度',cu, cv, cw, '标量','散度',div);

用法与非结构化的3D数据非常相似。只需将“structiped_grid”更改为“Unstructured_grid”。例如:

vtkwrite('random_vector.vtk','unstructure_grid',x,y,z,'向量','random_vector',u,v,w,)

示例3:出口3D线

x = 1:100;
y = sin(x);
z = sqrt(x);
vtkwrite('执行','polydata','行',x,y,z);
用户还可以指定数据输出的精度(默认为3)。例如:

vtkwrite(‘line.vtk’,‘polydata’,‘行’,x, y, z,‘精确’,5);
示例4:导出三角形数据

[x, y, z] =峰(100);
z = .4 * z;
tri = delaunay(x,y);
vtkwrite('peaps.vtk','polydata','三角形',x,y,z,tri);

示例5:导出四面体数据

d = [-1 1];
[x,y,z] = meshgrid(d,d,d);
dt = delaunaytriangulation(x(:),y(:),z(:));
vtkwrite('execute', 'polydata','tetrahedron', x, y, z, DT.ConnectivityList);

向量和标量字段输入的使用与内置Quiviver3和散射3函数相同,其中x,y,z指定网格点和u,v,w的坐标。对于多个数据数组条目,它们必须具有相同数量的网格点。x,y,z只需要指定一次,然后是[关键字,标题,数据]的组合。您可以根据需要添加许多数据阵列。在上面的示例中,您将最终结束单个VTK文件,其中包含相同数量的网格点数的三个数据阵列。在样本屏幕截图中,箭头的颜色代表了分歧的大小。

在Paraview中,按“Ctrl + O”打开文件。然后在“管道浏览器下方的”属性“页面上,单击”应用“。对于行和多边形数据,您应该已经看到了正确的数据表示。对于3D矢量字段,您必须进一步单击公共工具栏中的“字形”,然后在管道浏览器中选择字形对象,然后单击“应用”。

有关使用的更多详细信息,请参阅文件。

引用

CY Y(2021)。vtkwrite:以VTK文件格式导出各种2D/3D数据到ParaViewGitHub (https://github.com/joe-of-all-trades/vtkwrite)。检索

意见及评分(72.

Animesh Rastogi.

Dimitrios Kalliontzis.

嗨!

我有2D在Matlab中生成的有限元数据,我试图在帕划线中使用此代码进行处理。我有以下矩阵:CRD(节点数量,2),它给出了节点的2D坐标,节点(每个元素的节点数量,元素#的元素数),它提供节点之间的连接,u(节点的##########)给出每个节点的X&Y速度,P(节点的#1),它给出了节点上的压力。但是,我不太确定如何以适当的形式将所有这些放在那里,以便它们与代码兼容。我很感激你的帮助!

Auréliensibellas.

XYZ.

savvasgk.

Sung Wook Choi.

湿婆Poornan

savvasgk.

名Ghaderi亚兰

马丁•莱因哈特

朱利安

威廉Warriner

CSABA.

嗨乔,

谢谢你的代码,它工作得很好。我做了一些小修改,以便能够将数据集属性附加到POLYDATA案例,并使用POLYDATA案例以二进制格式保存vtk文件。
我通过ASCII和二进制选项成功测试了使用PolyData“三角形”的修改代码。请让我知道如何向您提交修改的代码。

问候,

javad.

亲爱的乔
我有一组数据点相同的“风”文件在Matlab (x, y和z 3D矩阵+ Vx, Vy,和Vz(速度))。
我使用了您的功能将此集数据点转换为* .vtk文件。但是当我运行榜首#2(如上所述)它不起作用,并且使用vtkwrite时出错(第83行)
预期1或4个数字输入!
Paraa中的错误(第12行)
vtkwrite('wind.vtk','structified_grid',x,y,z,..."

如果可能,请帮助我。如何纠正此错误?

问候

洪阳周

嗨乔,
当我在2017b运行例子2的非结构化网格,并读取到Mac上的paraview5.4,它似乎有一个文件格式问题,导致paraview崩溃。你能修好吗?
谢谢!

Dimosthenis Floros

Opitec.

嗨乔,

您的脚本是否支持非统一网格?金宝app

我想在非统一网格上显示标量数据集。

[x,y,z] = meshgrid(x,y,z);%x,y,z是不均匀的
vtkwrite('file.vtk','结构_grid',x,y,z,'scalars','强度',强度);

然而,Paraview并没有显示任何东西。

我尝试使用:vtkwrite('file.vtk','structured_points','Intensity', Intensity);
然后paraview显示数据集。

DongHo胫骨

我发现了一些错误。在第75行,“VIN”未定义变量。它应该被修改为“varargin”。这个代码很棒。

彼得劳伦斯

卢卡Bartolomei

阿施施库马尔

嘿Chaitanya !
在matlab中使用meshgrid来创建您的网格。

Lolaylak

谢谢!!!!!

CY Y.

m p,也许你可以尝试:!/ usr / bin / paraview --data ='matlab_export.vtk'&

sw

M P.

你好,谢谢你的剧本。我正在使用Linux和Octave。我在设置路径时收到错误,我正在使用它:
!CD / usr / bin / paraview --data ='matlab_export.vtk'&

如您所见,它表示数据错误。你有什么建议纠正这个吗?
谢谢和最好的问候,mahmoud

迈克尔TSO

太好了!

我发现您在生成的.vtk文件中的“SCALAR (title) float”后漏掉了一个1。但其他一切都很完美!

Germilly Barreto.

Alessandrom.

Chaitanya Goyal

你好乔,

我有一个大小(100,4)的矩阵。在这4列中,2列包含网格上所有点的“x”和'y'坐标,而其他2列包含该点上的解决方案“u”和'v'的值。“U”是“x”方向上的解决方案,而“v”是'y'方向的解决方案。矩阵如下所示:

x y u v
0 0 0.55 -0.03
1 0 0.04 0.34
....
....
100 0 -0.9 0.1
1 .单词conduct联想记忆:
1 1。.

我使用下面的命令来生成vtk,但是我在paraview中看不到任何东西。这里'out'是我的矩阵的名称。Z和w是零值向量。

x = out(:,1);Y = OUT(:,2);z = out(:,3);u = out(:,4);V = OUT(:,5);w = out(:,6);
vtkwrite('crg.vtk','structified_grid',x,y,z,'vectors','vector_field',u,v,w);

你能帮我解决这个问题吗?谢谢!

刘志强555.

谢谢你的代码,但我有数千行转换,那些线将折叠帕隆。你能帮我吗?

CY Y.

汤姆兰佩诺罗拉

Smyng

这可能是一个天真的问题,但你可以使用vtkwrite在圆柱形坐标(i.,r,theta,z)中将我的解决方案导出为标量字段吗?假设我的解决方案是PSI,其标量场分布在具有R1和R2的同心圆柱体。请告诉我并提前感谢!

CY Y.

@mohammad,我刚刚添加了对这类数据集的支持。金宝app查看示例用法1。

CY Y.

@Leonie,我有类似的情况。我单独输出每个时间点的数据,并给出了串行文件名。然后我可以将它们加载为帕划的时间序列。它对我来说很好。

蕾奥妮Petitclerc

你好,

谢谢你这个提交。我想将4D数据导出到Paraview(3D +时间)。我的数据表示通过时间改变的卷中的每个点处的速度。有没有办法使用此功能来导出此类数据?

默罕默德

嗨,Joe,谢谢你的投稿
我有一个问题,我有一个用于海马的体素数据(让我们用.mat格式说出3d体形)。如何将其转换为vtk fromat,但仍然我vtk格式的体素数据?
谢谢

H2SO4.

指定paraview.exe正确路径的另一种简单的方法:替换(例如)第176行

!CD C:\ Program Files \ Paraview-5.0.1-qt4-OpenGL2-Windows-64bit \ bin&paraview.exe --data ='c:\ users \ currentpath whesinyoureworking \ matlab_export.vtk'

&符号允许您仅在一行上执行多个命令。
伟大的剧本,真的很有用!

程乔琳

Venkatesh Inguva.

joe yeh,问题是在这个二进制vtk文件中保存的数据没有表示为曲面。它显示了一个卷在帕划线中没有渲染的卷。最终,我指定了一个x和y数组和z数组,它具有常量值。

CY Y.

对于Ricardo和Venkatesh,标量以二进制格式存储(使用fwrite函数),因此不能使用文本编辑器读取.vtk数据并理解它。这些文件是要被ParaView读取的。

Venkatesh Inguva.

我和里卡多·奥利维拉有同样的问题。请告知解决方案。

ricardo oliveira

功能看起来很神奇,但我真的不会用。我想绘制一个温度场,我有4个数组(大小为81x1)带有X,Y,Z,T值。我正在尝试使用如下函数:

vtkwrite('pared.vtk','structified_grid',x,y,z,'scalar','pared_plana',t)

但输出文件充满了疯狂的字符,如:“=cž9=cž9=cž9> *ª«=cž9>ž8ä”在哪里应该是数字。我无法理解我做错了什么。有人可以帮助我吗?我的x,y,z,t arrays是什么不对的?

CY Y.

嗨,你,我不熟悉你说的这类数据。看看你是否找到了与你想要的相似的数据类型,http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf如果有,也许我可以实现它。

CY Y.

对不起Sebastiano,我必须改变它。更改这两条线将导致错误显示。具体而言,我指的是fprintf(fid,'3%d%d%d \ n',(varargin {5} -1)');我必须改变它。但是,您将看到生成(0,0,0)的生成方式。这是因为减去了1。这部分代码来自另一个人的脚本,文件ID#22602

CY Y.

嗨,海巴斯提亚诺,谢谢你指出这一点。我想我解决了这个问题。它来自165行和169行。下载更新的版本,看看现在是否工作正常。

塞巴斯蒂亚诺

亲爱的乔,

非常感谢你的文件,它们对我很有帮助。
我有一个问题写vtk文件。我想写两个不同的文件,一个是表面,一个是网格的体积,就像这样:
vtkwrite (name_surf“polydata”、“三角形”,x, y, z, faces_0);vtkwrite (name_vol polydata,四面体,x, y, z, elem_0);
在两个文件中,在节点列表末尾的(0,0,0)右侧添加两个节点。这些节点不存在于输入x,y,z中。我真的不知道为什么这两点都是添加的。你有什么建议吗?
谢谢你!

嗨乔,

我想知道我如何使用这个脚本为一个四边形2D网格和颜色每个元素根据一定的值(为CFD目的)?

谢谢你所做的伟大工作!

CY Y.

@ Michael,谢谢你的评论。第81行中的维度分配主要用于第一维表示Y轴和第二维表示X轴的图像数据。当然,这可能对您的申请不同。

迈克尔

嗨乔,

我遇到了与非二次基地区域导出结构化网格的问题。在我看来,第81行中的尺寸宣言被混合起来。我改变了x和y方向来解决问题。

迈克尔,

PS:谢谢你的工作

程乔琳

程乔琳

程乔琳

最大尹

嗨,谢谢你的辛勤工作。这可能是愚蠢的,但如何将2D标量和向量字段导出到Paraview?

CY Y.

迪米特里,你不是在找例子四吗?它输出三角数据。

CY Y.

Hi Ted, ParaView确实支持RG金宝appBA查找表,但我还没有实现它。我可能很快就会做的。

CY Y.

嗨Rob,这是如何将卷数据导出到段的示例。

负载核磁共振
d =挤压(d);
[x, y, z] = ndgrid(1:尺寸(D, 1), 1:尺寸(D, 2), 1:尺寸(3 D));
vtkwrite('mri.vtk','structified_grid',x,y,z,'scalars','强度',d);

是的,在渲染3D卷时似乎似乎很慢。您可能想要为此目的尝试imagej 3D查看器。

rob

嗨乔,
首先,很好的剧本!!我试图将我的双矩阵(医学图像切片)放入VTK以及一些矢量数据。但是,当我加载Paraview中的双矩阵时,它只能用作点数据。当我在帕划线中选择卷时,它变得非常慢。我该怎么办才能获得批量数据?

最好的问候,

rob

蒂姆

这个工具可以写入标量RGB和alpha数据集到vtk文件吗?

德米特里

谢谢乔,好工作!是否有可能在三角网格上与此功能导出标量字段?类似的东西

vtkwrite('tri.vtk','polydata','triangle',x,y,zeros(size(x)),tri,'unstructured_grid',x,y,z,'scalars','scalar_field',字段);

或者它是一种不同的方法,可以在帕划线中看到这样的领域?

CY Y.

对不起,我真的不明白“细胞明显”真正的意思。不连续,您是否意味着有没有价值的网格点?如果是这样,你可以使用非结构化网格?我觉得我可能无法正确回答你的问题,因为我不知道数据的结构。如果您可以向我提供一组数据(或示例),我可以更好地回合。

Niels Aage.

嗨Joe,谢谢你的快速回复:-)我认为在我的问题中可能尚不清楚。示例1转储节点字段,以及我正在寻找的是一种细胞 - 明智的磁场(这可能是强调,密度等),这通常是元件之间不连续的东西。这可能吗?

CY Y.

嗨,Niels,我相信你希望做的是在例子1中列出的(见上面)?可以在同一个网格点中包含多个标量和矢量数据集。

Niels Aage.

这很棒!快速,简单,它只是有效。您是否计划将单元格常数DataT(vectors和scalars)包含在内的可能性?

CY Y.

Jameson,您可以使用此卷图像,假设您在每个网格点处只有一个强度值:

vtkwrite('volume.vtk','结构_grid',x,y,z,'scalars','强度',int);

詹姆逊

哎呀我错过了与'r'的第一个电话。

詹姆逊

我可以用它来写一个卷图像吗?
也许使用meshgrid为x,y,z设置一个结构化网格,然后设置u=v=w为强度值?(或者可能只是一个和另外两个0)

CY Y.

郝,我刚刚为非结构化网格添加了支持。金宝app看看是否适合您。

Holger I. Meinhardt

非常感谢添加“导出Tetrahedron”选项。它按预期工作

CY Y.

Hao,目前该脚本不支持非结构化网格数据类型。金宝app如果你能给我提供一个样本数据集,我应该能够添加这个功能。

这是美妙的!

这可以用于非结构化网格三维速度数据吗?我有矢量分布在三维空间的随机位置。

Matlab释放兼容性
用R2016A创建
与任何版本兼容
平台的兼容性
窗户 麦克斯 Linux

社区宝藏狩猎

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!