0

我用过这段代码:

    private void ilPanel1_Load(object sender, EventArgs e)
    {    using (ILScope.Enter())
        {
            ILArray<float> X = new float[] { 0, 0, 1, 1, 2.5F, -2.6F, 5, 9, 1, 38 };
            ILArray<float> Y = new float[] { 1, 0, 1, 0, 1.5F,  0.5F, 5, 9, 1, 39 };
            ILArray<float> Z = new float[] { 0, 0, 1, 1, 0.4F, -0.2F, 5, 9, 1, 39 };
            X = X.Reshape(2,5);
            Y = Y.Reshape(2,5);
            Z = Z.Reshape(2,5);
            ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) {
                new ILSurface(Z, colormap: Colormaps.Cool) {
                    Colors = 1.4f  ,Children = { new ILColorbar() }
                }
            });
        }
    }

这会产生:

在此处输入图像描述

但是我检查了这个问题并尝试调整已弃用的 ILnumerics 解决方案(因为我没有找到其他 c# 代码),但仍然没有得到它,每个坐标(Z、X 和 Y)对应于数组中的一个切片(mxn)。所以需要重塑数据。

这部分是问题:

            X = X.Reshape(2,5);
            Y = Y.Reshape(2,5);
            Z = Z.Reshape(2,5);

如果我没有给出正确的大小,程序就会失败,所以在示例中我在每个向量上有 10 个元素,所以在重新分析时我会放 2,5,乘以 10?...

如果我有 11 个元素,如果我把 2,5 放在 reshape 上我得到错误怎么办?

该怎么办?

我试过使用X = X.Reshape(11);但它失败了......如果我使用X = X.Reshape(10);它就不要画任何东西

4

1 回答 1

1

曲面绘制网格。必须提供一个网格,以便让表面有机会了解如何连接点,这些点应该是邻居。

重塑应该不是问题,因为原始数据无论如何都必须代表网格/矩阵的点。所以对该矩阵的重塑肯定会起作用。

reshape(10) 创建一个长度为 10 的向量。因为向量最多表示一条线,但不代表一个区域 - 没有绘制任何内容。记住:表面绘制网格或矩阵。

于 2013-09-20T21:43:50.767 回答