2013-04-30 25 views
0

创建单元格数组我尝试在可以将两个值分配给单元格数组的句柄类中创建一个简单的方法。第一个值是一个数字,只是一个观察数字。下一个值必须是两个字母字符串。我曾尝试以下方法:Matlab,从方法

function addemp(obj, num,ini) 
     obj.empnam(num,:) = {num,ini}; 
    end 

其中,mednum是观察编号,medini是字符串。我曾尝试调用如下函数:

Addemp(m,1,'ES') 

其中m是Holders空empnam类属性的对象。

这将返回错误: 分配有更多的非单RHS尺寸大于非单 标

,所以我希望我的想法很明确,我相信这是一个简单的语法错误。

非常感谢你提前

/拉塞

+0

你如何定义/ init属性'obj.empnam'? – Shai 2013-04-30 15:54:16

+0

它只是空的?我通过构造函数加载它: m = scheme 这只是给了我已经决定拥有的四个空属性。 – Lasse 2013-04-30 15:58:51

+0

我的代码好像是在数组已经创建的时候运行的,但是如何创建一个空的cellarray?只是细胞()?因为这可能是我自己的问题的解决方案.. – Lasse 2013-04-30 16:18:39

回答

1

这似乎已经解决了,但也许不是最漂亮的解决方案。这是我做的:

function addemp(obj, num,ini) 
     if isa(obj.empnam, 'cell') == 0 
      obj.empnam = {}; 
      obj.empnam(num,1:2) = {num,ini}; 
     else 
      obj.empnam(num,1:2) = {num,ini}; 
     end 
end 

这似乎已经做到了。我所看到的问题是,这个财产是空的,不知道如何行事。它与矩阵有关,但与单元阵列无关。如果不存在,则添加此逻辑将创建一个空单元阵列。

感谢您的意见! /Lasse

0

此错误消息表明您试图像变量数组存储到标位置。您是否尝试过这样的:

function addemp(obj, num,ini) 
     obj.empnam(num,:) = {{num,ini}}; 
end 

或第一件事formost

function addemp(obj, num,ini) 
     disp(size(obj.empnam(num,:))); 
end 
+0

第一个想法似乎创造了一个新问题,给我的信息: 从单元转换为双是不可能的。 我在白天尝试了很多不同的东西,这是我见过很多的消息之一,似乎无法弄清楚如何解决它:) – Lasse 2013-04-30 16:05:47