我米使用ILNumerics读取和/至matfiles写。 我从一个数据库对象获得一些数据[,],因为它包含数字和标题(字符串)。
的数据结构object[,] loaddata
是的混合物System.String
和System.Double
前两列,并且第一行包含字符串休息双打。 我想写双打进入matfile。 尺寸大致loaddata[9000,500]
这是我通过这并不甚至工作系统阵列,非常麻烦绕行:
ILArray<object> loaddata = DBQuery(....);
//this next line has error
var tempoobj = ToSystemMatrix<object>(loaddata["2:end", "1:end"]);
double[,] tempdouble = new double[500, 8784];
Array.Copy(tempoobj, tempdouble, tempoobj.Length);
ILArray<double> B = tempdouble;
using (ILMatFile matW = new ILMatFile())
{
B.Name = "power";
matW.AddArray(B);
matW.Write(@"C:\Temp\Test.mat");
}
从这里ToSystemMatrix功能如何ILArray转换为双[,]数组? - 这是我不可能做的工作。
任何想法如何简化呢? 以及如何让该功能的工作(因为它是有用的反正)。
UPDATE
我做了这个工作,但感觉像它用大锤去....但在这里说到:
object[,] loaddata = DBQuery(...);
for (int i = 0; i < loaddata.GetLength(0); i++)
{
loaddata[i, 0] = Convert.ToDouble(0);
loaddata[i, 1] = Convert.ToDouble(0);
}
for (int i = 0; i < loaddata.GetLength(1); i++)
{
loaddata[0, i] = Convert.ToDouble(0);
}
double[,] tempdouble = new double[loaddata.GetLength(0), loaddata.GetLength(1)];
Array.Copy(loaddata, tempdouble, loaddata.Length);
ILArray<double> B = tempdouble;
using (ILMatFile matW = new ILMatFile())
{
B.Name = "power";
matW.AddArray(B["1:end","2:end"].T);
matW.Write(@"C:\Temp\Test.mat");
}
我还试图用ILCell代替,但ILCell loaddata = DBQuery(...)
和cell(loaddata)
抛出的错误。
任何想法如何使这更整洁?