如何将变量移入或移出类似于 MATLAB 中的 LOAD 和 SAVE 的结构?

2024-01-28

是否有一种快速方法(即一行)来转储结构“中”的变量集合,使用变量名称作为结构字段? “加载”函数基本上就是这样做的,但是保存和加载到临时文件看起来很丑陋。

例如:

clear
a = 'adsf'
b = rand(10);

x = var2struct(a,b)

x.a
x.b

或者更好:

x = var2struct(['a';'b'])

另外,反过来怎么样(即将字段值转储到当前作用域作为以字段命名的变量)?:

clear
x.a='asdf'
x.b=rand(10);
dumpstruct(x)
a
b 

另外,这里有一个相关的新闻组话题 http://www.mathworks.cn/matlabcentral/newsreader/view_thread/289189.


除了使用LOAD http://www.mathworks.com/access/helpdesk/help/techdoc/ref/load.html and SAVE http://www.mathworks.com/access/helpdesk/help/techdoc/ref/save.html,据我所知,没有内置函数可以执行此操作。但是,您可以创建自己的函数,如下所示:

function s = var2struct(varargin)
  names = arrayfun(@inputname,1:nargin,'UniformOutput',false);
  s = cell2struct(varargin,names,2);
end

function struct2var(s)
  cellfun(@(n,v) assignin('base',n,v),fieldnames(s),struct2cell(s));
end

从基础工作区工作,您可以像这样使用这些函数:

a = 'adsf'
b = rand(10);
x = var2struct(a,b);
clear a b
struct2var(x);

一些注意事项:

  • 如果您想指定参数var2struct作为变量名而不是变量本身,这是一个替代函数:

    function s = var2struct(varargin)
      values = cellfun(@(n) evalin('base',n),varargin,'UniformOutput',false);
      s = cell2struct(values,varargin,2);
    end
    

    您可以从基础工作区使用它,如下所示:

    x = var2struct('a','b');
    

    不幸的是,您只能使用该版本的函数从基础工作区获取变量,而不能从函数的工作区获取变量。

  • 需要注意的是struct2var上面的函数的特点是它总是在基础工作区中创建变量,而不是调用函数的工作区struct2var。要在基础工作区以外的工作区中创建变量,您必须在该工作区中使用此行而不是调用struct2var:

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

如何将变量移入或移出类似于 MATLAB 中的 LOAD 和 SAVE 的结构? 的相关文章

  • 黑白随机着色的六角格子

    我正在尝试绘制一个 10 000 x 10 000 随机半黑半白的六边形格子 我不知道如何将该格子的六边形随机填充为黑色和白色 这是我真正想要从这段代码中得到的示例 但我无法做到 https i stack imgur com RkdCw
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 基于整数创建多个变量

    我想根据我定义的数字创建多个变量 目前 我有一个客户端和一个服务器正在运行 每次客户端加入时 我希望服务器创建一个变量 每个用户都分配有一个号码 list of addr user num 0 recv verf addr server s
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • less.js - 在解析器回调中获取变量值

    我正在使用 less js 1 3 0 在客户端将 less 解析为 css 在解析器的回调中 我想获取每个变量的值 我尝试了以下方法但没有成功 var data colour red example background color co
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • ROC曲线和libsvm

    给定一条 ROC 曲线plotroc m see here http www csie ntu edu tw cjlin libsvmtools roc curve for binary svm 理论问题 如何选择要使用的最佳阈值 编程问题
  • 模块函数中使用的 $_ 变量为空 (PowerShell)

    这里有一个问题要问你 我有这个功能 function Set DbFile param Parameter ValueFromPipeline true System IO FileInfo InputObject Parameter Va
  • PowerShell,如何增加变量名称?

    我目前正在编写一个解析 XML 文件的 PowerShell 脚本 它将一些解析的值保存为变量以供以后使用 例如 假设我的 XML 如下所示
  • 快速有效地计算已知特征值的特征向量

    我的问题的简短版本 计算矩阵特征向量的最佳方法是什么A 如果我们已经知道属于特征向量的特征值呢 更长的解释 我有一个很大的随机矩阵A由于它是随机的 因此具有非负左特征向量x 这样A Tx x 我正在寻找快速有效的方法来数值计算这个向量 最好
  • MATLAB 类的 Description 和DetailedDescription 属性

    内置 MATLAB 类具有 Description 和 DetailedDescription 属性的值 gt gt handle ans meta class handle Package meta Properties Name han
  • 检测分段常数信号中的阶跃

    我有一个分段恒定信号 如下所示 我想检测步骤转换的位置 标记为红色 我目前的做法 使用移动平均滤波器平滑信号 http www mathworks com help signal examples signal smoothing html
  • 从动态 Java 类路径导入 Java 类时出现 Matlab 编译器 MCC 错误

    我怎样才能得到mcc识别来自用户提供的 Java 库的导入 还是简单地忽略无法解析的导入 我有一个使用 Matlab 编译器构建的 Matlab 代码库 但构建正在中断 因为mcc遇到的时候会报错importMatlab 动态类路径上的 J
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • scipy distance_transform_edt 函数如何工作?

    https docs scipy org doc scipy 0 14 0 reference generated scipy ndimage morphology distance transform edt html https doc
  • 将 Javascript 变量转换为 PHP 变量

    我想使用由 videoel getCurrentTime 函数返回给我的 javascript 变量 并将其转换为 php 变量 以便我能够将其添加到我的 SQL 插入查询中 例如 INSERT INTO tblData VALUES ph

随机推荐