在 Matlab 中,我使用 oracles 数据提供程序来查询 oracle 数据库。我想用结果填充一个 matlab 矩阵或二维数组。我是一个 .NET 人,但在 Matlab 中并不强。我们有使用 Matlab 但对 .NET 一无所知的分析师,因此我们陷入了困境。我们不想为他们拥有的 Matlab 数据库工具包提供 2k,这就是我们使用 .NET 从 Matlab 查询数据库的原因。
有什么想法可以轻松地将数据表从 .NET 转换为 matlab 中的矩阵或二维数组吗?请注意,我们使用的是 ODP.NET,因此不存在正常的 ADO.NET GetRows()。如果我们将 MS 的 OLE 用于 oracle,但 PC 是 Win 7 64 位并且 MS 在该平台上不再支持 oracle,这就是我将使用的。您必须使用 oracles ODP,这就是我们正在使用的。使用其他任何东西都不是 atm 的选项,因此解决方案需要牢记这一点。
目前我能够查询数据库,并遍历每一行/列,但在添加到矩阵时遇到问题。即因为我需要将数字或字符串都存储在矩阵中,并且在遍历每一列时我得到了转换类型,但由于某种原因 strcmp() 没有返回匹配项,即使它看起来应该:
for r = 1:rowCount
for c = 1:colCount
type = tbl.Rows.Item(r).Item(c).GetType().ToString();
val = tbl.Rows.Item(r).Item(c);
if strcmp(type,'System.Decimal') == 1
m(r, c) = tbl.Rows.Item(r).Item(c).ToDouble();
elseif strcmp(type, 'System.String' == 1) || strcmp(type, 'System.DateTime' == 1)
m(r, c) = tbl.Rows.Item(r).Item(c).ToString();
end
m(r, c) = tbl.Rows.Item(r).Item(c).ToString();
end
end
考虑到这一点,我怎样才能让矩阵或二维数组接受任何类型的数据?如果你愿意的话,一个变种。我在做 m = zeros(rowCount, colCount); 但这似乎使它期望数字,这是有道理的,但我仍然希望同时保存数字和字符串,并让用户找出他们希望进行数学运算的列。