在Matlab Simulink中将动态大小的mxArray转换为struct

时间:2017-08-18 10:11:20

标签: matlab struct simulink matlab-coder

我有extrinsic function,返回mxArraywebread()。这个mxArray实际上应该是一个结构,以便我可以访问它并读取其中的数据。问题是它有一个动态大小,所以我不能只是静态地定义它的大小。

这是我的代码:

function out = getDataFromCloud()
coder.extrinsic('webread');
coder.extrinsic('weboptions');

url = 'theurl';
options = weboptions('ContentType','json');
data_conv = webread(url);
disp(data_conv(1:1).code); %At this point it fails, because '.code' is not 
%possible with an mxArray

我对Matlab很新,所以请你亲切一点。感谢您提供的每一个答案!

EDIT1

我创建了一些虚拟数据,因此您可以自己测试问题。 dummy data link。说明:在虚拟数据中,category_0的数量始终为3,因此有codesubcat_0subcat_1。在这些变量中,有一些变量是静态的,但也有变量只能保存动态填充的数组。

上面的代码使您能够实际执行重现错误所需的一切。只需在像这样的Matlab simulink模型中使用getDataFromCloud()

model block

有必要的是,您使用我提供的网址更改'theurl'。代码不需要任何更改,应该重现问题。如果没有,只需写评论。

EDIT2

到目前为止,我已经找到了一种方法来完成我想用Matlab S-Function做的所有事情。如果你有兴趣,我为它创建了一个repo。 问题仍然存在,我很乐意听到答案。

0 个答案:

没有答案