【问题标题】:Matlab, creating a cell array from methodMatlab,从方法创建一个单元格数组
【发布时间】:2013-04-30 15:47:00
【问题描述】:

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

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

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

Addemp(m,1,'ES')

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

这会返回错误: 分配比非单件具有更多的非单件 rhs 维度 下标

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

非常感谢您

/拉瑟

【问题讨论】:

  • 如何定义/init属性obj.empnam
  • 只是空的?我正在通过构造函数加载它:m = scheme 这只是给了我我决定拥有的四个空属性。
  • 我的代码似乎在运行,因为数组已经创建,但是如何创建一个空的单元格数组?只是细胞()?因为这可能是我自己问题的解决方案..
  • 似乎已经解决了,但也许不是最漂亮的解决方案。这就是我所做的: function addemp(obj, num,ini) if isa(obj.empnam, 'cell') == 0 obj.empnam = {}; obj.empnam(num,1:2) = {num,ini};否则 obj.empnam(num,1:2) = {num,ini}; end end 这似乎做到了。在我看来,问题在于该物业是空的,现在不知道如何行动。如果还没有,则不添加此逻辑会创建一个空元胞数组。感谢您的投入! /拉斯

标签: matlab


【解决方案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

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

感谢您的投入! /拉斯

【讨论】:

    【解决方案2】:

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

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

    或第一件事

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

    【讨论】:

    • 第一个想法似乎产生了一个新问题,给我的信息是:从单元格转换为双精度是不可能的。白天我尝试了很多不同的事情,这是我经常看到的消息之一,只是似乎无法弄清楚如何解决它:)
    猜你喜欢
    • 2013-11-01
    • 2013-07-28
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多