Matlab では、oracles データ プロバイダーを使用して oracle データベースにクエリを実行しています。結果を matlab 行列または 2D 配列に入力したいと考えています。私は .NET 派ですが、Matlab は苦手です。Matlab を使用しているアナリストがいますが、.NET については何も知らないため、行き詰まっています。彼らが持っている Matlab データベース ツールキットに 2k を使いたくないので、.NET を使用して Matlab からデータベースにクエリを実行しています。
データテーブルを.NETからmatlabのマトリックスまたは2D配列に簡単に変換する方法はありますか? ODP.NET を使用しているため、通常の ADO.NET GetRows() が存在しないことに注意してください。これは、MS の OLE for Oracle を使用しているが、PC が Win 7 64 ビットであり、MS がそのプラットフォームで Oracle をサポートしていない場合に使用するものです。オラクル ODP を使用する必要があるため、それを使用しています。他のものを使用することはオプションではないため、ソリューションはそれを念頭に置く必要があります。
現在、データベースにクエリを実行し、各行/列をループ処理できますが、マトリックスへの追加に問題があります。つまり、数値または文字列の両方をマトリックスに格納する必要があり、各列をループしている間に変換用の型を取得していますが、何らかの理由で 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
これを念頭に置いて、マトリックスまたは 2D 配列に任意のタイプのデータを受け入れるようにするにはどうすればよいでしょうか? 必要に応じてバリアント。私はやっていた m = zeros(rowCount, colCount); しかし、これは数字を期待しているように見えますが、これは理にかなっていますが、それでも数字と文字列の両方を保持し、ユーザーが計算したい列を把握できるようにしたいと考えています。