gpt4 book ai didi

Matlab Coder 在使用 coder.load 加载 MAT 文件时在结构数组中抛出混合字段类型错误

转载 作者:行者123 更新时间:2023-12-01 13:44:37 26 4
gpt4 key购买 nike

我正在处理一个 MATLAB Coder 项目,我想在其中加载一些常量值。在尝试了多种可能性之后,均未成功,我提出了“coder.load”指令,该指令从 MAT 文件加载变量并假定它们作为生成的 C 代码中的编译时常量。

这是我得到的错误:

Found unsupported class for variable using function 'coder.load'. Mixed field types in structure arrays are not supported. Type at 'ind_x.params(1).name' differed from type at 'ind_x.params(2).name'.

但问题是“params”结构数组的“name”字段对于每个数组元素具有相同的类型。实际上,在命令窗口中尝试它会给我相同的类型:

>> class(ind_x.params(1).name)
ans =
char
>> class(ind_x.params(2).name)
ans =
char

结构数组的其他字段是“double”类型的,还有一个是“bool”类型的,但是在同一字段的不同数组元素中类型不会改变,所以我不明白错误。

最佳答案

好的,我想我找到了问题的答案。问题确实是字符串长度。如果结构数组的字段之一是“char”类型,则每个数组元素的长度必须相同。也就是说,如果你定义

ind_x.params(1).name = 'john';
ind_x.params(2).name = 'harry';

如果您尝试使用 coder.load() 加载该结构,它将引发错误,因为 length(ind_x.params(1).name)长度(ind_x.params(2).name)。解决方法可能是定义最大长度并向字符串添加尾随空格。

此限制可能来自 C 中的常量定义,但我发现困惑的是误导性错误消息。无论如何感谢您的帮助!

编辑: 我意识到上述对常量结构数组的限制不仅对类型“char”有效,而且对所有类型都有效!不能有长度在不同数组元素中变化的字段。

关于Matlab Coder 在使用 coder.load 加载 MAT 文件时在结构数组中抛出混合字段类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com