matlab中3d域中的2d轮廓切片

沙扎德·穆罕默德·萨瓦尔

我有一个数据文件,其中包含变量 V 的 x、y、z 坐标

x                   y   z                   V 
0                   0   0.500000000000000   3.91743717285931
0.0500000000000000  0   0.500000000000000   4.82593865902504
0.100000000000000   0   0.500000000000000   5.03874568425820
0.150000000000000   0   0.500000000000000   4.84015746128314
0.200000000000000   0   0.500000000000000   4.31320834211277
0.250000000000000   0   0.500000000000000   4.71007310928003
0.300000000000000   0   0.500000000000000   5.68353172300361
0.350000000000000   0   0.500000000000000   6.93907354201857
0.400000000000000   0   0.500000000000000   1.69713115593222
0.450000000000000   0   0.500000000000000   0
0.500000000000000   0   0.500000000000000   0
0.550000000000000   0   0.500000000000000   0
0.600000000000000   0   0.500000000000000   0.485840981213434
0.650000000000000   0   0.500000000000000   1.30265381445392
0.700000000000000   0   0.500000000000000   1.73892191516507
0.750000000000000   0   0.500000000000000   1.78720066586633
0.800000000000000   0   0.500000000000000   0.401158585618868
0.850000000000000   0   0.500000000000000   4.33700792828408
0.900000000000000   0   0.500000000000000   5.76388423361443
0.950000000000000   0   0.500000000000000   2.41835943394263

由于包含值的数据文件都在单独的列中,我正在尝试将整个 doamin 转换为单个 3d doamin。

input = importdata('lci_000210.dat',' ',3);
nx = 96;
ny = 96;
nz = 49;

x = input.data(:,1);
y = input.data(:,2);
z = input.data(:,3);
Lci = input.data(:,4);


L3d = reshape(Lci,[nx,ny,nz]); 
x3d = reshape(x,[nx,ny,nz]);
y3d = reshape(y,[nx,ny,nz]);
z3d = reshape(z,[nx,ny,nz]);


[x3d,y3d,z3d,L3d] = flow;
xslice = 5;
yslice = 0;
zslice = 0;
slice(x,y,z,Lci,xslice,yslice,zslice);
view(25,20);
colormap jet
colorbar

然而,这不断抛出以下错误

V must be a 3-D array.

所以我真的不确定如何处理数据集,我真正想要的是在数据集的任何位置截取一个切片,但仍然显示 3d doamin。我附上了一张图片,显示了我希望切片的表示方式。我试过重新整形,但那不起作用,我已经完成了重新整形,因为数据在列中,重新整形将它变成了一个 3d 矩阵。

数据来自流体流动模拟

任何建议和帮助对于如何从这个数据集中获取切片都非常有帮助。 在此处输入图片说明

在图像中,它在 y=0 处显示了一个轮廓切片,但我希望它显示在任何 y 位置,因此可以看到切片是从完整的 3d 图片中获取的

杰利安特

问题似乎是您的 x3d 和 y3d 颠倒了。

slice(y3d,x3d,z3d,L3d,[],[],[0.1 0.3 0.5]);
ax=gca;
ax.Children(1).LineStyle='none';
ax.Children(2).LineStyle='none';
ax.Children(3).LineStyle='none';
view(25,20);
colormap jet
colorbar

在此处输入图片说明

对于轮廓,只需给它一个值来绘制轮廓。

figure(2);clf
contourslice(y3d,x3d,z3d,L3d,[],[],[0.1 0.3 0.5],[10 20]);
view(25,20);

在此处输入图片说明

对于轮廓图,我找到了一个不同的解决方案。不像其他两个那么简单。

zax = squeeze(z3d(1,1,:));
zvals=[2 13 24];
figure(1);clf;hold on
for ct = 1:length(zvals)
    %plot the contour
    contourf(L3d(:,:,zvals(ct)),[0 10 20]);
    ax=gca;
    ax.Children(1).XData=x3d(:,1,1); %set x axis
    ax.Children(1).YData=y3d(1,:,1); %set y axis
    ax.Children(1).ContourZLevel=zax(zvals(ct)); %put at correct z
end
view(25,20);colormap

在此处输入图片说明

感谢 Amro 的回答:在一个 3d 图形中绘制多个 2d 等高线图 [Matlab]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在numpy中获取3D数组的2D切片的平均值

来自分类Dev

用numpy中的2D ndarray切片3D ndarray?

来自分类Dev

Matplotlib中2d切片的3d图上函数下方的填充区域

来自分类Dev

从python中的3D数组切片创建新的2D数组?

来自分类Dev

Matplotlib中2d切片的3d图上函数下方的填充区域

来自分类Dev

如何沿列(垂直)从 2D 矩阵中切片矩阵并在 tensorflow 中创建 3D?

来自分类Dev

3D矩阵切片的2D卷积

来自分类Dev

在python中将2D切片合并为3D体积

来自分类Dev

使用matplotlib滚动浏览重叠的3D图像的2D切片

来自分类Dev

numpy:连续2d切片的连续3d体积?

来自分类Dev

基于2D数组的3D numpy切片的平均值

来自分类Dev

在Matlab中从3D数据中提取数据切片

来自分类Dev

查找go中2D切片的长度

来自分类Dev

2D阵列切片

来自分类Dev

2D切片混乱

来自分类Dev

通过2D阵列遮罩3D阵列以进行切片,而无需for循环

来自分类Dev

通过从二进制数据文件创建的 3d 矩阵的 2d 切片

来自分类Dev

在Matlab中将值切片和分配给3D数组

来自分类Dev

快速3D矩阵切片

来自分类Dev

切片3D Numpy数组-误解

来自分类Dev

快速3D矩阵切片

来自分类Dev

Armadillo cpp:访问 3D 字段的切片

来自分类Dev

执行:通过切片的切片(2D切片)访问阵列时的意外性能

来自分类Dev

将3d阵列中的每个矩阵切片乘以R中的单个矩阵

来自分类Dev

根据条件切片2D numpy数组

来自分类Dev

Python 2D列表切片

来自分类Dev

就地更改2D切片

来自分类Dev

在PHP中切片2D数组

来自分类Dev

3D NumPy阵列中每个子阵列或切片的频率计数