0

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

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

其中,mednum 是观察编号,medini 是字符串。我试过这样调用函数:

Addemp(m,1,'ES')

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

这将返回错误:Assignment has more non-singleton rhs dimension than non-singleton subscripts

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

非常感谢您提前

/拉斯

4

2 回答 2

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

这似乎已经做到了。在我看来,问题在于该物业是空的并且不知道如何采取行动。它适用于矩阵,但不适用于元胞数组。如果还没有一个空元胞数组,则添加此逻辑会创建一个空元胞数组。

感谢您的投入!/拉斯

于 2013-05-01T10:35:52.357 回答
0

此错误消息表明您正在尝试将类似变量的数组存储到标量位置。你有没有试过这个:

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

或第一件事

function addemp(obj, num,ini)
        disp(size(obj.empnam(num,:)));
end
于 2013-04-30T15:55:58.563 回答