matlab - 如何将结构中的变量加载到 Matlab 工作区中?

标签 matlab

假设我可以访问使用 load 函数创建的结构:

structWithVariables = load('data.mat');

我想将此结构中的所有变量加载到工作区中,但如果不对所有变量的名称进行硬编码,我找不到任何方法。

注意:我无权访问 .mat 文件,也没有加载结构的代码,我实际上只有结构。

注意 2:我想要这样做的原因只是为了使用一些引用变量的代码,就好像它们在工作区中一样。我不想更改代码。

最佳答案

是的。使用 fieldnames 以编程方式获取变量名称,并使用 assignin 将它们粘贴到您的工作区中。

function struct2vars(s)
%STRUCT2VARS Extract values from struct fields to workspace variables
names = fieldnames(s);
for i = 1:numel(names)
    assignin('caller', names{i}, s.(names{i}));
end

将该函数称为 struct2vars(structWithVariables),现在它们作为变量填充到您的工作区中。

尽管如果您有权访问要调用的代码,重写代码以将变量作为函数参数而不是查看当前工作区可能会更清晰。

关于matlab - 如何将结构中的变量加载到 Matlab 工作区中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29958368/

相关文章:

matlab - 如何在 MATLAB 中保持断点的同时清除持久变量?

matlab - fft/iff : Sampling Frequency and Length of Signal

matlab - 在matlab中打开数据光标模式时如何获取点击点的坐标?

matlab - 用另一个矩阵对一个矩阵进行排序

matlab - 一旦创建了 Matlab 结构,如何使它保持不变?

matlab - 从向量到 Matlab 中较短的平均值向量

matlab - 如何将向量规范化/非规范化到 [-1;1] 范围

matlab - 在 MATLAB 中绘图时循环颜色

matlab - 如何从 MATLAB 查询物理内核数?

Matlab生成散点之间的平滑曲线