图片缩略图

PLOTCUBE

版本1.0.0.0 (1.74 KB) by 奥利维尔
图3 d cube

134下载

更新01 2007年6月

查看许可协议

PLOTCUBE—在当前轴中显示一个3d立方体

PLOTCUBE(边、原点、ALPHA值、颜色)在当前轴中显示一个3d立方体
具有以下特性:
*边:定义立方体边长度的3元素向量
原点:定义立方体起始点的3个元素向量
* ALPHA:标量,定义立方体面的透明度(从0开始
1)
*颜色:定义立方体表面颜色的三元素向量

例子:
plotcube([5 5 5],[2 2 2],。8日(1 0 0));
plotcube([5 5 5],[10 10 10],。8,[0 1 0]);
plotcube([5 5 5],[20 20 20],。8日(0 0 1));

引用作为

奥利维尔(2020)。PLOTCUBE(//www.tianjin-qmedu.com/matlabcentral/fileexchange/15161-plotcube), MATLAB中央文件交换。检索

意见及评级(33)

dralp

非常感谢,奥利维尔。它将正常工作。有可能在渐变中给一组立方体上色吗?

香港易

> > plotcube ([。5。5。5]、[。2 .2 .2],0.1,[0 0 1])
无法识别的函数或变量“plotcube”。

如何避免出现这个错误?我在Windows 10上使用Matlab R2019b。同样的问题也出现在Matlab Android应用程序中!

亚当Danz

简单和直观!我建议添加一个axis句柄输入,用num2cell替换mat2cell,并返回立方体每一边的对象句柄向量。它看起来是这样的。

函数h = PLOTCUBE(varargin)
inArgs ={…
[1056100],…%默认边缘大小(x、y和z)
[10],…多维数据集原点的默认坐标
7,…立方体面的默认alpha值
[1 0 0],…多维数据集的默认颜色
gca……%默认轴
};
用输入值替换默认输入参数
inArgs(1:输入参数个数)=变长度输入宗量;
创建所有变量
[边缘,起源,α,clr, axh] =交易(inArgs {:});
XYZ ={…
[0 0 0 0] [0 0 1 1] [0 1 1 0];…
[1 1 1 1] [0 0 1 1 1] [0 1 1 1 0];…
[0 1 1 0] [0 0 0 0 0] [0 0 1 1];…
[0 1 1 0] [1 1 1 1] [0 0 1 1];…
[0 1 1 0] [0 0 1 1 1] [0 0 0 0 0];…
[0 1 1 0][0 0 1 1 1][1 1 1 1 1]…
};
XYZ = mat2cell (…
cellfun(@(x,y,z) x*y+z,…
XYZ,……
repmat (num2cell(边缘)、6、1),…
repmat (num2cell(起源)、6、1),…
“UniformOutput”,假),…
6、(1 1 1));
h = cellfun (@patch repmat ({axh} 6 1),…
XYZ XYZ {1}, {2}, XYZ {3},……
repmat ({clr} 6 1),…
repmat ({‘FaceAlpha} 6 1),…
repmat({α}6 1)……
);
视图(3);

亚当Danz

艾米·劳

在绘制立方体之后,我要存储立方体顶点的坐标。怎么做呢?

莫先生

你知道怎么给这个功能添加图例吗?

莫先生

你知道如何给这个函数添加图例吗?

代码不错,但是有点慢

谢谢你的代码Olivier。
我同意Mike关于优化大数据集代码的建议。
下面是一个应用于uint8图像三维可视化的例子(大数据变得很重):

图(1);colormap灰色
因为我= 1:Nx
j = 1:纽约
k = 1:新西兰
图(1);plotcube([1 1 1],[I -1 j-1 k-1],.8,I(I,j,k));抓住
结束
结束
结束
集(gca, DataAspectRatio, (100 100 100));

其中I是大小为(Nx,Ny,Nz)的三维图像。

迈克

你好奥利弗,
伟大的代码,谢谢:)
但是,有什么方法可以改变立方体的边缘透明度吗?
例如,在代码中添加“EdgeAlpha”,例如在当前行下面添加“FaceAlpha”:
repmat ({‘FaceAlpha} 6 1),…

还有,有没有什么方法可以为非常大的数据集优化这段代码?(例如几十万个街区!)
例如,以某种方式将数据类型更改为uint8或uint16 ?
(如果我试图输入uint8格式的数据,有一个错误'cellfun':

plotcube>@(x,y,z)x*y+z(第41行)中的错误
cellfun(@(x,y,z) x*y+z,…

欢呼了!
迈克

Kazawar

非常感谢

谢谢:)

Thouraya

谢谢

谢谢真的很有帮助

Panintorn

非常好

韦森特

MATLAB版本兼容性
创建R2007a
兼容任何版本
平台的兼容性
窗户 macOS Linux
确认

启发:rppd