问题标签 [4d]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - Matlab中简化一个四维规则表:寻址每个维度的行和列
我目前正在尝试为一组观察自动生成一组模糊规则,其中每个观察包含四个值,其中每个观察将对应于一个状态(一个很好的例子是 Fisher 的虹膜数据)。
在 Matlab 中,我正在创建一个四维规则表,其中单个单元格 (a,b,c,d) 将包含相应的状态。为了减少表格,我遵循了行列相似性检查的Hong 和 Lee方法,但我很难理解如何处理第三维和第四维的行和列。从方法来看,我的理解是每个维度都是单独处理的,如果规则是真的,表格就会被简化。合并规则如下:
- 如果相邻列或行中的所有单元格都相同。
- 如果两个单元格相同,或者相邻
列或行中的任何一个为空,并且两者中至少有一个单元格不为空。- 如果一列或一行中的所有单元格都是空的,并且如果它的两个
相邻列或行中的单元格相同,则合并三个。- 如果一列或一行中的所有单元格都是空的,并且如果它的两个
相邻列或行中的单元格相同或其中一个为空,则合并三个。- 如果一列或一行中的所有单元格都是空的,并且如果
其左侧的列或行中的所有非空单元格具有相同的区域,并且其右侧的列或行中的所有非空单元格具有相同的区域,但与前面提到的区域不同,将这三列合并为两部分。
现在是令人困惑的一点。简单地检查整个行/列是否与相邻的(规则 1)相同似乎很简单:
这个对吗?
但是要检查行/列中的元素是否匹配,或者是否为零(规则 2 和 4),我有点迷茫。会不会是这样的:
对于第三维和第四维:
甚至对四维数组的任何帮助都会很有用,因为我对超过三个的想法感到非常困惑!我建议您查看论文以理解我的意思-他们自己使用了 Iris 数据,但仅给出了 2D 表格的示例。
java - Java 中最快的数据结构(4D 可视化处理)
我有一个需要使用可视化框架的应用程序。我目前倾向于在 Java 桌面应用程序中使用处理。
问题:我有大约 500k+ 状态向量需要可视化。4D 点 - XYZ 和时间(类似 GPS)
我需要能够快速轻松地选择时间片,并且能够及时播放它们。我可以使用平面文件或数据库来更改输入。
所以问题是:哪种数据结构最能满足我的需求?我是否将文件读入 Arraylists?哈希图?还是内存数据库?或者是其他东西?
性能是 3D 可视化的必要条件。时间超过8小时。因此,并非所有这些都将立即显示。
有没有人尝试使用创造性的编码框架来进行这种类型的使用?有什么建议么?
谢谢!
3d - 如何将 2D 点与 4D 矩阵相乘
如何使用 4D 矩阵将 2D 点(或 Z=0 的 3D)转换为 2D 点(忽略 Z)?
我正在使用 Microsoft 的 Silverlight 使用 Matrix3D 的 Matrix3D 定义将 2D 控件投影为伪 3D
我知道未转换控件中某个点的初始 2D 坐标,并且我想要转换后该点的 2D 位置。
silverlight API 很少涉及 3D 方法。
请建议基本数学来执行计算。
编辑更多细节
它不工作。我在用
输入 x 和 y 为 0,0,结果 x,y 为 0, 58.5786 矩阵为
在 Z 轴上产生 45 度角的旋转,其中旋转点是平面的底部。
包括 OffsetX 在内的所有 M1n 值都是 0.0,导致 x 始终是原始值。
我究竟做错了什么 ?
这是我的四个示例值以及上述数学的结果
查看生成的图像,400x400 平面的左上角为 45,135,右上角为 355,135,左下角为 0,400,右下角为 400,400
所以对于 0,0,0,1.0 的测试值,我希望 x 和 y 为 45,135
matlab - 4d曲线拟合
我在 Matlab r2010b 中使用曲面拟合工具箱来曲线拟合 3 维数据。该工具是通过 GUI 进行 3d 曲线拟合的非常有用且简单的工具。到目前为止,我处理 3d 数据,例如;(X 输入:x(nx 1 向量),Y 输入:y(nx 1 向量),Z 输出:z(nxn 矩阵))
但是现在,我正在尝试处理 4 维数据,例如;(X 输入:x(nx 1 向量),Y 输入:y(nx 1 向量),Z 输入:z(nx 1 向量)和 T 输出:t(nxnxn 矩阵))。
我无法通过曲面拟合工具箱来实现这一点。如何使用 4 维数据进行曲线拟合?
将不胜感激任何帮助。
c++ - 4 维隐藏表面去除
我正在尝试编写一个小型 4d 游戏。我使用 C++ 和 OpenGL。这个网站很好地解释了如何增强 4d 图像:
http ://eusebeia.dyndns.org/4d/vis/07-hsr.html#Enhancing_4D_Projection_Images
他们告诉应用 4d 隐藏表面去除 (HSR) 算法。
我不得不说我是编程和算法方面的新手,我真的不知道从哪里开始组装 4d HSR 或 3d HSR。
如果有人对这类算法有经验,可以解释一下如何用 C++ 翻译它吗?
顺便说一句:我将 4d 空间投影到 3d 中,所以我需要一个顶点移除算法,而不是像素修改,或者至少是我认为的......我可能是错的......
matlab - Matlab:Plot3 未显示第三轴
我用来绘制的所有三个变量都是 size 的矩阵1x1x100
。我正在使用此代码行来绘制:
但是,我没有得到第三个轴,因此没有得到CO2_molefraction_top_of_window
图中的第三个变量。我可以知道我哪里错了吗?
除了上述问题,但在同一主题上,我想知道是否有任何选项可以绘制 4 维图,就像可以使用绘制的 3 维图一样plot3
?
matlab - 带有数据光标 Matlab 的 4D 绘图显示变量
我无法弄清楚如何在我的图中显示 4 个变量。
我想改变自变量 X,V,以产生因变量 Y 和 Z。Y 是 X AND V 的函数。Z 是 Y AND X 的函数。
这可能更容易看到依赖关系:X、V、Y(X,V)、Z(X,Y(X,V))。
我使用了 surf 函数来绘制 X、Y、Z,但我也想知道 V 的值,我目前无法确定。
下面是一些测试数据来说明:
如果我使用数据游标,我可以看到 X、Y、Z 的值,但我也想知道 V 的值。我知道我设置它的方式是正确的,因为如果我制作两个图,比如说:
然后使用数据光标在两个图形的 X 和 Z 的同一点上进行,V 和 Y 的值就是该点 (X,Z) 的值。
无论如何都可以显示 X、Y、V 和 Z 的值而不必生成两个单独的图表?
谢谢!
cuda - 在 GPU 上分割 4D 数据
我面临的问题是分割大型数据集(高达 2048x2048x40x10000 x,y,z,t == 解压后的几 TB,给予或接受)。从好的方面来说,这个数据集中的特征相当小。最大 20x20x20x20 左右。
据我所知,没有开箱即用的解决方案(如果我错了,请纠正我)。我有一些如何解决这个问题的计划,但我希望得到您的反馈。
一个时间片最大约为 600mb;在典型情况下较少;我可以在我的 4gb 内存中保存一堆连续的此类切片。
鉴于我的特征尺寸很小,我的直觉告诉我最好避开所有形式的分割技巧,而只需对我的标签进行局部迭代的类似洪水填充的更新;如果你的邻居有更高的标签,复制它;迭代直到收敛。迭代次数应受任何维度中的最大集群大小的限制,这又应该很小。
CUDA 天生偏爱 3D,所以我可以分两步进行;迭代所有尚未收敛的 3d 体积切片。然后简单地对所有连续的时间片进行元素循环,并执行相同的填充逻辑。
我可以用一个简单的递增唯一计数器来初始化迭代,或者先找到局部最大值,然后在那里种子标签。后者是首选,所以我可以保留一个按标签索引的数组来存储所有区域的 x、y、z、t 最小/最大范围(也可以作为后处理)。如果一个区域没有扩展到最新的时间片,它会从数据中删除,并将其位置写入数据库。如果尾随时间片以这种方式完全耗尽(总和为零),请将其从内存中删除。(或者如果内存溢出,也删除最新的;必须忍受这样的近似值)
看起来应该可以。考虑到 z 维度的大小有限,您认为是启动 x,y,z 线程块,还是启动 x,y 块并让每个线程在 z 维度上循环更好?这是一种“试试看”的事情,还是有一个答案?
我刚刚想到的另一个优化;如果我将一个 x,y,z 块加载到共享内存中,那么在我获得内存的同时执行几次洪水填充更新会不会更快?也许最好让本地内存迭代到收敛,然后继续……我想这与上述问题有关。单个邻居最大查找可能是次优的计算强度,因此在 z 上循环或迭代多次应该可以抵消这一点。我觉得我更喜欢后者。
另一个问题; 似乎不存在类似的东西,但是包含执行类似操作的模板代码的项目的链接将受到高度赞赏(优化的 3d 洪水填充代码?),因为我的 CUDA 知识仍然参差不齐。
提前感谢您的想法和反馈!
matlab - 如何在matlab中加载多个3d dicom文件并随着时间的推移(4d)查看它们
我有 30 个 3D MRI dicom 图像文件夹(以不同的时间间隔 t1、t2 等拍摄)。每个文件夹包含 2D dicom 图像(大约 30 张图像)。我需要将这些视为 4D 电影(随时间推移为 3D)。我对在 matlab 中处理 dicom 图像非常陌生。你能帮我解决这个问题吗?预先感谢您的问候
matlab - MATLAB:如何构建每个级别的 4d 图
我需要构建一个如图所示的图表,只需要在其他图表的不同级别显示。我找到了这个:
我们可以改为 S 传输另一个图,例如contour()
,以获得不同级别的不同图形,如上所示?如果是这样,怎么办?