原帖: 我得到了很多积分。每个点由四个值组成。前三个值是X,Y和Z.最后一个我需要用作点的颜色。
在Matlab中"散布"功能为我做了。那里很容易,我只需要传递我的数组的第四维作为颜色的参数。但是在matlab中绘制超过100.000点的点云是不高效的。因为我想使用ILNumerics。
如果我是对的,就像matlab那样做不可能,因为ILNumerics需要一个数组[3]或数组[4]作为ILPoints的颜色属性。
有没有一种简单的方法可以将我的第4个值转换为ILPoints.Color所需的颜色属性/数组?
感谢您的帮助!
新帖子:
数据集:包含四个参数(X,Y,Z并让我们称之为颜色)的巨大点列表。使用普通的StreamReader,我读取所有行并将它们转换为List。之后我将它们传递给float [] Array
float[] xArray = xFloat.ToArray<float>();
float[] yArray = yFloat.ToArray<float>();
float[] zArray = zFloat.ToArray<float>();
float[] colorArray = colorFloat.ToArray<float>();
之后我创建了一个ILArray,将float []传递给此ILArray
ILArray<float> points = ILMath.zeros<float>(4, xFloat.Count);
points["0;:"] = xArray;
points["1;:"] = yArray;
points["2;:"] = zArray;
points["3;:"] = colorArray;
如果我创建一个4维数组的数组,每次运行/调试工具时,ILPanel都是空白的。所以实际上我使用这段代码将X,Y,Z-和Color-Information转换为ILArrays
ILArray<float> points = ILMath.zeros<float>(3, xFloat.Count);
points["0;:"] = xArray;
points["1;:"] = yArray;
points["2;:"] = zArray;
ILArray<float> color = ILMath.zeros<float>(1, xFloat.Count);
color["0;:"] = fzArray;
我的所有值都在位置颜色[&#34; 1; 0&#34;]而不是我将其编码为位置颜色[&#34; 0;:&#34;],因为在位置0处有价值&#34;(:,:) 1e + 003 *&#34;并且所有数据都在位置1并且被分开1000。
Nex我得到颜色的限制-ILArray将它们传递给ILStaticColormapProvider
color.GetLimits(out min, out max);
var cmProv = new ILNumerics.Drawing.Plotting.ILStaticColormapProvider(Colormaps.ILNumerics, min, max, AxisScale.Linear);
其他所有内容都与您的链接代码相同。对于&#34; Colors&#34; ILPoints的参数我使用Colors = cmProv.Colormap.Map(color["0;:"]).T
所有东西都用不同颜色绘制和着色,但颜色条范围应该是从-2081到222,但是从30到60.所以使用颜色的粒度不足以看到之间的差异绘制点。