【问题标题】:Load a field of struct into a variable (MATLAB)将结构字段加载到变量中(MATLAB)
【发布时间】:2011-08-31 16:35:53
【问题描述】:

我的硬盘上存储了一个结构。我需要将其字段之一加载到局部变量中。一个简单的负载得到

% 'PRICES' is the stored struct.  1st fieldname is '.Raw'.  
% Only '.Raw' needs to be loaded

var = load( fullfile(path, 'PRICES.Mat') ) % Wrong as var becomes a struct containing a struct.
% DESIRED value: var = PRICES.Raw ;

是否可以一步完成?我当然可以覆盖 var 并完成此操作,但是有直接的方法吗?谢谢。

【问题讨论】:

  • MAT 文件的“字段”是什么意思?你的意思是“变量”还是“变量的字段”?
  • PRICES 在保存之前是一个结构,第一个字段名为“Raw”。在save 命令之后,它被存储为 PRICES.Mat。我需要重新获取 PRICES.Raw 矩阵并将其输入变量。

标签: matlab variables struct matlab-load


【解决方案1】:

如果您使用的是 MATLAB 7 或更高版本,您可以使用 -struct 标志保存您的结构:

save(fullfile(path, 'PRICES.Mat'),'-struct','PRICES');

如果以这种方式保存结构,则可以加载结构的特定字段而无需加载结构的所有字段:

load(fullfile(path, 'PRICES.Mat'),'Raw');
disp(Raw);

【讨论】:

  • 但是*mat文件包含一堆变量,不再是一个结构,对吧?
  • 好吧,如果需要一个完整的结构,有没有一种简单的方法可以从分解的变量中重建原始结构?否则,我们只需要预先决定我们真正想要加载的内容。
  • 另外,“-STRUCT 的参数必须是一个标量结构变量。”所以如果我们有一个结构数组,这将失败。
【解决方案2】:

您无法从 MAT 文件加载变量的一部分。你想要:

var = load( fullfile(path, 'PRICES.Mat'), 'PRICES' );
var = var.PRICES.Raw;

load( fullfile(path, 'PRICES.Mat'), 'PRICES');
var = PRICES.Raw;

查看 MATLAB 帮助:http://www.mathworks.co.uk/help/techdoc/ref/load.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多