簡體   English   中英

MWarray將double []轉換為ushort []

[英]MWarray convert double[] to ushort[]

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;
}

這是我從MWArray獲取double[]功能,但是為什么我這樣做:

prepImage.RawData = Array.ConvertAll(prepRawData, Convert.ToUInt16);

我有時會遇到異常,因為matlab返回的double太大而無法進行轉換。

有人遇到過這個問題嗎? 我可以裁剪數字,但是還有其他解決方案嗎?

顧名思義, UInt16保存無符號的16位整數(值從0到65535)。 另一方面, double結構的范圍為-1.79769313486232e308至1.79769313486232e308。

這里的問題是您的Matlab代碼返回的是負值或大於65535的正值。Matlab還將NaN分配給任何未初始化的值,這對於UInt16也是無效的。

要解決您的問題,請確保您的Matlab代碼實際上僅返回0到65535范圍內的值,或者將C#端的數據結構更改為UInt16其他值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM