C# MWarray将双精度[]转换为ushort[]

C# MWarray将双精度[]转换为ushort[],c#,matlab,C#,Matlab,这是我从MWArray 然而,我为什么这样做: public static double[] ParseDoubleArray(MWArray array) { var vector2d = (array as MWNumericArray).ToArray() as double[,]; var vector1d = new double[vector2d.Length]; System.Buffer.BlockCopy(vector2d, 0, vector1d, 0

这是我从
MWArray
然而,我为什么这样做:

public static double[] ParseDoubleArray(MWArray array)
{
    var vector2d = (array as MWNumericArray).ToArray() as double[,];
    var vector1d = new double[vector2d.Length];
    System.Buffer.BlockCopy(vector2d, 0, vector1d, 0, vector2d.Length * sizeof(double));
    return vector1d;
}
我有时会遇到一个异常,因为matlab返回的双精度值太大,无法进行转换


有人遇到过这个问题吗?我可以裁剪数字,但还有其他解决方案吗?

UInt16
,顾名思义,它包含无符号16位整数(值从0到65535)。另一方面,
double
结构的范围从-1.79769313486232e308到1.79769313486232e308

这里的问题是,您的Matlab代码返回大于65535的负值或正值。Matlab还将为任何未初始化的值分配
NaN
,该值对于
UInt16
也是无效的


要解决您的问题,请确保您的Matlab代码实际上只返回0到65535范围内的值,或者将C端的数据结构更改为除
UInt16

之外的其他值。是否预期双精度太大?也许是Matlab代码中存在返回意外值的问题?@Vache我从Array.ConvertAll()函数中得到了一个异常,为什么它不能处理双精度呢?
prepImage.RawData = Array.ConvertAll(prepRawData, Convert.ToUInt16);