【问题标题】:save part of matlab cell array, proper refence保存部分matlab单元格数组,正确参考
【发布时间】:2014-05-21 20:42:42
【问题描述】:

我在这里找到了某人之前发布的以下 MATLAB 代码:

x = cell(3,4);
save x;
matObj = matfile('x.mat','writable',true);
matObj.x(3,4) = {eye(10)};

它会创建一个 .mat 文件,其中包含一个 3x4 单元格数组,位于 (3,4) 处的单元格的内容是一个 10x10 单位矩阵。

读取 .mat 文件并将单位矩阵中位于 (2,3) 处的元素的值更改为 -5 的正确语法是什么?

如果可以使用花括号,我会使用 mat.Obj.x{3,4}(2,3)=-5,但 MATLAB 表示不支持这种类型的元胞数组引用。

提前致谢。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    据我所知,matlab 中无法像您想要的那样引用 matlab.io.MatFile 对象。更简单的方法是创建一个临时变量来执行此操作。

    因此尝试这样做:

    matObj.x(3,4) = {eye(10)};
    matObj.x{3,4}(2,3)=-5; % this will lead to error, as you noticed
    

    这样做:

    tmpVar = eye(10);
    tmpVar(2,3) = -5;    
    matObj.x(3,4) = {tmpVar};
    

    【讨论】:

    • 嗯,谢谢,这是一个解决方案,但前提是临时变量不需要内存。我有意避免将整个矩阵加载到内存中,只是为了更新它,然后再保存回 mat 文件。因为矩阵太大而无法完全加载到内存中。关于如何做到这一点而不必将整个矩阵加载到内存中的任何想法?
    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 2012-07-01
    • 2015-10-11
    • 2015-10-18
    • 2017-09-22
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多