MATLAB Compiler API for .NETでデータの受け渡しを行う場合、多次元配列フィールド値をコマンドライン上で確認する方法
조회 수: 1 (최근 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에서 MATLAB での .NET メソッド에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!