MATLAB Compiler API for .NETでデータの受け渡しを行う場合、多次元配列フィールド値をコマンドライン上で確認する方法
3 次查看(过去 30 天)
显示 更早的评论
お疲れ様です。
MATLAB Compiler SDKを用いて、MATLAB関数をパッケージ化し、.NETアセンブリに統合したいと考えています。
構造体のデータ型でデータをやり取りしようとした際、MATLABから出力された構造体の内、一つのフィールド値について、GetFieldを用いて値を取得しようとすると以下のエラーが出現します。
エラー内容:
System.InvalidOperationException
HResult=0x80131509
Message=Accessing properties and methods not supported for MATLAB struct.
Source=MathWorks.MATLAB.Types
スタック トレース:
場所 MathWorks.MATLAB.Types.MATLABArray.TryInvokeMember(InvokeMemberBinder binder, Object[] args,
Object& result)
場所 System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
場所 namespace名.Program.Main(String[] args) (C:\Users\...\Program.cs):行 105
.NET側で構造体を定義し、MATLAB側で構造体のフィールド値に関する値を計算します。
その後、MATLAB側から更新された構造体を.NET側に返します。この際、.NET側は更新された構造体のフィールドの値を確認したいと考えています。
Program.cs:
class Program
{
private static Double[,] X = new Double[,] {};
private static Double[,] Y = new Double[,] {};
private static MATLABStruct mystr = new MATLABStruct(("X",X),("Y",Y));
static void Main(string[] args)
{
︙
// % 出力定義
dynamic mystr_out
MATLABFunctions.example(matlab, mystr, out mystr_out)
Double[,] field_fp = mystr_out.GetField("fp"); // % 例外発生個所
︙
mystr = mystr_out;
}
}
問題を解決するため、お力添えいただければ幸いです。
5 个评论
Kojiro Saito
2024-1-16
出力のデータ型をMATLABArrayからMATLABStructに変更したら例外処理が起こらなくなったということは、 配列に対して構造体のメソッド(GetField)を行おうとしていたのかなと考えられます。
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Deploy to .NET Applications Using MATLAB Data API for .NET 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!