前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab循环遍历struct结构体

matlab循环遍历struct结构体

作者头像
HHTjim 部落格
发布2022-09-26 10:41:28
1.5K0
发布2022-09-26 10:41:28
举报
文章被收录于专栏:HHTjim'S 部落格HHTjim'S 部落格

matlab循环遍历struct结构体

作者:matrix 被围观: 9,441 次 发布时间:2019-06-27 分类:零零星星 | 2 条评论 »

这是一个创建于 1161 天前的主题,其中的信息可能已经有所发展或是发生改变。

matlab网络请求操作完成之后需要对返回数据读取,操作时候出现的问题就是无法循环struct数据。

因为接口一般以json数据格式返回,matlab会把Object结构处理为struct数据而无法循环读取。很多字段的时候我可不希望看到手写矩阵声明。

取struct长度的sizelength都无法正常返回其元素个数,听说它不是向量。

办法

fieldnames函数获取struct的字段field数据(返回为cell元胞数组)

之后用structName.(expression)这种操作获取动态的struct数组数据。比如struct.a等同于动态操作的struct.('a')

现在才知道文档上有,我TM竟然随便点括号猜出来的~

代码语言:javascript
复制
%声明方式1
%s = struct('a',11,'b',222)

%声明方式2
s=struct
s.a = 11
s.b = 222

% https://ww2.mathworks.cn/help/matlab/ref/struct.html

fileds = fieldnames(s);

for i=1:length(fileds)
    k = fileds(i);
    key = k{1};
    value = s.(key);

    disp(key)
    disp(value)
    disp('---')
end

% s.('a') %动态结构体引用

升级操作:自动生成对应变量

按照Struct字段自动生成对应的变量名和值

代码语言:javascript
复制
s = struct('a',11,'b',222)

fileds = fieldnames(s);

for i=1:length(fileds)
    k = fileds(i);
    key = k{1};
    value = s.(key);
    eval(['variable_',num2str(key) ' = ' num2str(value)])
end

说明:

使用eval函数动态创建variable_%s的变量。

本来在mathworks上看到有人发布过Structure fields to variables方法来自动处理struct,但是没有正版授权码 所以无法下载使用。

参考:

https://ww2.mathworks.cn/help/matlab/learn_matlab/types-of-arrays.html

https://ww2.mathworks.cn/help/matlab/ref/struct.html

https://www.ilovematlab.cn/thread-317868-1-1.html

https://ww2.mathworks.cn/matlabcentral/fileexchange/26216-structure-fields-to-variables

PEACE~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • matlab循环遍历struct结构体
    • 办法
      • 升级操作:自动生成对应变量
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档