如何在 MATLAB 中动态访问结构体字段的字段?

2024-02-02

我对访问可能埋藏在包含结构深处的任意数量的级别的字段的一般问题感兴趣。下面是使用两个级别的具体示例。

说我有一个结构toplevel,我使用以下命令从 MATLAB 命令行定义它:

midlevel.bottomlevel = 'foo';
toplevel.midlevel = midlevel;

我可以访问midlevel通过将字段名称作为字符串传递来构造结构,例如:

fieldnameToAccess = 'midlevel';
value = toplevel.(fieldnameToAccess);

但我无法访问bottomlevel以相同的方式构造——以下是无效语法:

fieldnameToAccess = 'midlevel.bottomlevel';
value = toplevel.(fieldnameToAccess); %# throws ??? Reference to non-existent field 'midlevel.bottomlevel'

我可以写一个函数来查看fieldnameToAccess句点,然后递归迭代以获得所需的字段,但我想知道是否有一些巧妙的方法可以使用 MATLAB 内置函数直接获取字段值。


对于您的示例,您必须将动态字段访问分为两个步骤,例如:

>> field1 = 'midlevel';
>> field2 = 'bottomlevel';
>> value = toplevel.(field1).(field2)

value =

foo

但是,有一种方法可以将此解决方案推广到具有任意数量的由句点分隔的子字段的字符串。您可以使用该功能TEXTSCAN http://www.mathworks.com/help/techdoc/ref/textscan.html从字符串和函数中提取字段名称GETFIELD http://www.mathworks.com/help/techdoc/ref/getfield.html一步执行递归字段访问:

>> fieldnameToAccess = 'midlevel.bottomlevel';
>> fields = textscan(fieldnameToAccess,'%s','Delimiter','.');
>> value = getfield(toplevel,fields{1}{:})

value =

foo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 MATLAB 中动态访问结构体字段的字段? 的相关文章

  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • MATLAB 变量传递和惰性赋值

    我知道在 Matlab 中 当将新变量分配给现有变量时 会进行 惰性 评估 例如 array1 ones 1 1e8 array2 array1 的价值array1不会被复制到array2除非元素array2被修改 由此我推测Matlab中
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 帮助我理解FFT函数(Matlab)

    1 除了负频率之外 FFT 函数提供的最小频率是多少 是零吗 2 如果它为零 我们如何在对数刻度上绘制零 3 结果总是对称的 或者只是看起来是对称的 4 如果我使用abs fft y 来比较2个信号 我是否会失去一些准确性 1 除了负频率之
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • Mathworks 生成 Matlab HTML 文档的方法是什么?

    我正在开发共享的 Matlab 代码 我们希望在本地网络中将生成的文档作为可搜索的 HTML 文档共享 我知道以下生成文档的方法 编写一个类似于 C 文件的转换器 这是在中完成的将 Doxygen 与 Matlab 结合使用 http ww
  • 像matlab一样在python中连接数组而不知道输出数组的大小

    我正在尝试在 python 中连接数组 类似于 matlab array1 zeros 3 500 array2 ones 3 700 array array1 array2 我在 python 中做了以下操作 array1 np zero
  • 考虑预分配速度[重复]

    这个问题在这里已经有答案了 我正在做以下事情 for i 1 m index 0 for j 1 n index index values i j 2 j 1 if j 1 symbol chip chip values index 1 e
  • 绘制布朗运动 matlab

    首先 我只想说我不太习惯使用matlab 但我需要一个作业 我应该创建一个 布朗运动 我的代码目前如下所示 clf hold on prompt Ge ett input size input prompt numParticles inp
  • 在 Python 上显示 Matlab mat 文件中的图像

    我目前正在尝试显示从此下载的 Mat 文件中的图像site http www rctn org bruno sparsenet 这是一个 mat 文件 所以我尝试使用 scipy io loadmat 函数加载它 但我似乎无法绘制图像 我究
  • Blob 的簇生长

    考虑以下来自 Mathworks 的图像 我已经用标签标记了斑点 L num bwlabel I 如何迭代连接所有斑点 即从一个斑点开始 找到离它最近的一个 考虑最左边的两个斑点 可以从一个斑点的许多点绘制许多条线来连接到另一个斑点blob
  • 如何在matlab中使矩阵图平滑

    就像上图一样 怎样才能让画面更流畅呢 或者缩小y轴的范围 数据来自二维矩阵 然后我用plot data 请随意提出任何想法 平滑线条的一种方法涉及样本点之间数据的非线性插值 当你这样做时plot x y o http www mathwor
  • 计算给出数组中最小标准差的子集

    让我们有一个大小的向量N 例如 x rand N 1 我想计算长度子集的最小标准差K在向量中 When N and K很小 很容易找到最好的子集 因为我可以使用nchoosek N K 枚举所有可能的子集 但是当值N and K比我们说的要
  • 如何从 Matlab 运行 R 脚本 [重复]

    这个问题在这里已经有答案了 我有 m 文件 我想用它来运行 R 脚本 我怎样才能做到这一点 Matlab文件 caller m some matlab code need to call a R script some matlab cod
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • MATLAB - 从目录读取文件?

    我希望从目录中读取文件并对每个文件迭代执行操作 此操作不需要更改文件 我知道我应该为此使用 for 循环 到目前为止我已经尝试过 FILES ls path to folder for i 1 size FILES 1 STRU pdbre
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • Matlab 的 fftn 在多线程下变得更慢?

    我可以访问 12 核机器和一些严重依赖 fftn 的 matlab 代码 我想加快我的代码速度 由于 fft 可以并行化 我认为更多的内核会有所帮助 但我看到的恰恰相反 这是一个例子 X peaks 1028 ncores feature

随机推荐

  • JsonProvider 可以反序列化为 Generic.Dictionary 吗?

    我正在学习类型提供程序 它看起来像是一个突破性的功能 但是 我无法设法使用 JsonProvider 反序列化 json 以便目标类型具有 Generic Dictionary 属性 可以使用 Json NET 来完成 这是代码 type
  • 在 GO 中获取传入的 TTL

    我正在为我正在进行的一个小项目而苦苦挣扎 我想在 GO 中实现功能 允许我在传出 UDP 数据包上设置 IP 标头 TTL 然后发送该数据包并查看另一端收到的 TTL 我尝试使用 net 库提供的多个连接 但到目前为止没有成功 我可以设置
  • 逐行读取输入

    如何在Java中逐行读取输入 我搜索过 到目前为止我有这个 import java util Scanner public class MatrixReader public static void main String args Sca
  • 在 Android ActionBar 上设置导航图标

    因此 我正在努力将 ActionBarSherlock 和导航抽屉添加到以前实现自定义 写得很差 操作栏 的项目中 某些活动不使用片段和活动的后台堆栈进行导航 而是显示和隐藏不同的布局 也就是说 假设我处于列表模式 然后选择一个按钮进入编辑
  • CQRS 项目是否需要像 NServiceBus 这样的消息传递框架?

    过去 6 个月的学习曲线充满挑战 CQRS 和 DDD 是罪魁祸首 这很有趣 我们的项目已经完成了 1 2 我还没有时间深入研究的领域是消息传递框架 目前我不使用 DTC 因此如果我的读取模型未更新 那么很可能会出现读取和写入数据库之间的不
  • MediaCodec 给出了 storeMetaDataInBuffers 跟踪错误

    在 Android 中通过 MediaCodec 进行编码时 我在 logcat 上遇到了下一个错误 实际的编码工作正常并且输出生成正确 所以我无法真正理解为什么我得到这个跟踪 这是无害的错误跟踪 还是我遗漏了什么 E ACodec 643
  • 使用 PowerShell 授权 Office365 逻辑应用 API 连接

    尝试设置一堆支持Azure功能等的逻辑应用程序 概念是利用ML Azure功能 逻辑应用程序等来设置自动邮件系统 一切都是使用 ADO Git 和 CD CI 管道进行部署的 但我们在 Office365 连接器方面遇到了问题 它在创建后需
  • 即使应用程序似乎未安装,也会失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

    当尝试将我的应用程序部署到 Android 设备时 我收到以下错误 Deployment failed because of an internal error Failure INSTALL FAILED UPDATE INCOMPATI
  • Glyphicon 在 bootstrap 版本 4.1 及更高版本中不起作用

    我试图展示一个搜索图标形式 但唯一的按钮显示没有字形
  • 将数据文件添加到python项目setup.py

    我有一个这样的项目 CHANGES txt LICENSE MANIFEST in docs index rst negar Negar py Virastar py Virastar pyc init py data init py un
  • 随机长长生成器 C++ [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 生成随机数的解决方案是什么long
  • 验证 struts 2 中的双字段

    我的 struts 2 表单之一中有一个 长度 字段 length 的数据类型是 double 我已经在 XML 文件中应用了 双重 验证 但是当我在 长度 文本字段中键入字母时 它显示错误消息为 Invalid field value f
  • 我搞砸了我的 System_server 服务吗?

    我的手机正在产生不间断的 Log d 输出 以下内容不断重复每秒1200次 04 25 15 58 04 883 1542 5012 D NetworkStatsCollection getHistory mUID 10266 isVide
  • antlr4:如何知道在给定上下文的情况下选择了哪个替代方案

    假设有一个关于 类型 的规则 它可以是预定义类型 由 IDENTIFIER 引用 或 typeDescriptor type IDENTIFIER typeDescriptor 在我的程序中 我有一个 typeContext ctx 的实例
  • 垂直对齐:基线有什么用?

    我以为我了解 CSS 但我现在需要向某人解释一些事情 但我发现我做不到 我的问题基本上可以归结为 为什么vertical align baseline当同一行中有其他对齐时被忽略 示例 如果第二个跨度有vertical align bott
  • 实体框架4:我的load方法和IsLoaded属性在哪里?

    我正在使用 EF4 并且在我的类中使用 System Data Entity dll 但是 我看不到实体的导航属性的加载方法 我怎样才能访问这个方法 我正在做的是创建 NET 的 e 4 0 项目 从数据库创建我的 edmx 右键单击模型
  • 在 Android studio 项目上找不到参数的方法 test()

    在我的 Android 应用程序中 我想排除包中的一些测试用例 以便我使用test任务在build gradle文件 例如 apply plugin com android library test exclude calltest Sum
  • 无法生成云端点类

    亲爱的程序员朋友们 我对编程非常陌生 我正在遵循有关使用应用程序引擎后端教程的教程 然而我一路上遇到了一些问题 我已经设置了 App Engine 后端应用程序项目 创建了一个 CheckIn 实体类 之后 我按照说明创建一个名为 Chec
  • Oracle 存储过程出错

    当尝试创建此存储过程时 我收到错误 PLS 00428 此 SELECT 语句中需要 INTO 子句 Code CREATE OR REPLACE PROCEDURE FindDb P BookId IN BOOKMASTER BookId
  • 如何在 MATLAB 中动态访问结构体字段的字段?

    我对访问可能埋藏在包含结构深处的任意数量的级别的字段的一般问题感兴趣 下面是使用两个级别的具体示例 说我有一个结构toplevel 我使用以下命令从 MATLAB 命令行定义它 midlevel bottomlevel foo toplev