2012-06-25 77 views
2

我想加载并保存从classdef样式类实例化的一些对象。 当对象存在于工作区中时,我可以使用“保存”和“加载”,但不能在外面。如何将MATLAB类保存到文件

例如,如果我有一个名为manager的类,需要加载并保存不同的员工类,那么该雇员类将不存在于工作区中。

我是否需要编写自定义保存例程?有没有利用现有工具的方法?

+0

管理器是否包含(具有)员工作为类成员?或者它只是一个内部管理器的静态功能? –

+0

员工将是经理的班级成员 – danatron

回答

1

首先,我希望我能正确理解你的问题。

你有这样的事情:

class Manager 
     properties 
      Employees 
     end 
    end 

    class Employee 

    end 

你的Manager

manager = Manager(); 
    e1 = Employee(); 
    e2 = Employee();; 
    manager.Employees{1} = e1; 
    manager.Employees{2} = e2; 

一个实例,并要保存它。

在这种情况下,即使您的工作区中没有e1e2,保存命令也会在保存Manager时保存它们。

但是,为了正确加载它们,您的工作目录中必须同时有EmployeeManager。这是有道理的,,因为没有其他方式知道它是什么样的类。实际上,您将收到一个错误:

Warning: Variable 'manager' originally saved as a Manager cannot be instantiated as an object and will be read in as a uint32. 
Warning: Variable 'e1' originally saved as a Employee cannot be instantiated as an object and will be read in as a uint32. 
Warning: Variable 'e2' originally saved as a Employee cannot be instantiated as an object and will be read in as a uint32. 
+0

谢谢,但这更多的是解决方案的解决方法。我想我可以更直接地提出这个问题:我想保存一个不在工作区中的类。保存例程不起作用,我所能做的就是为每个类编写一个自定义的保存/加载例程。有没有更好的办法? – danatron

+0

@ user1104922,不是我所知道的。 –