【问题标题】:Error when using rref: "Undefined function for input argument of type 'cell'."使用 rref 时出错:“'cell' 类型的输入参数的未定义函数。”
【发布时间】:2015-08-30 22:48:24
【问题描述】:

输入:

B = {0 1 1 1 1; 0 -1 -1 1 1; 0 1 1 -1 2}
B = 

    [0]    [ 1]    [ 1]    [ 1]    [1]
    [0]    [-1]    [-1]    [ 1]    [1]
    [0]    [ 1]    [ 1]    [-1]    [2]

然后当我尝试运行 rref(B) 时,它给了我这个:

rref(B)

Undefined function 'isfinite' for input arguments of type 'cell'.

Error in rat (line 58)
    tol = 1.e-6*norm(X(isfinite(X)),1);

Error in rref (line 27)
[num, den] = rat(A);

有什么线索吗?

【问题讨论】:

  • 欢迎来到 SO!只是对未来帖子的一点友好建议:我对您的问题进行了编辑。如果您比较当前和以前的标题,您会发现当前的标题更具描述性。 “MATLAB:rref() 和表的错误”并没有真正说明这个问题。此外,没有必要在标题中包含 MATLAB,因为标签本身就会为任何有兴趣回答 MATLAB 问题的人弹出帖子(可以选择最喜欢的标签)。现在,积极的一面:您包含了一个可重现的代码,并包含了整个错误消息。这非常好!! =)
  • 有趣的是rref 不做任何自己的类型检查。但话又说回来,在大多数情况下,这将是不必要的工作,并且代码迟早会因非矩阵输入而中断(如此处)。

标签: matlab math


【解决方案1】:

rref 的输入必须是数值数组。在 MATLAB 中,square brackets are used to create regular matrices,而curly brackets are used for cells

所以,以下工作正常:

B = [0 1 1 1 1; 0 -1 -1 1 1; 0 1 1 -1 2];
rref(B)   
ans =

     0     1     1     0     0
     0     0     0     1     0
     0     0     0     0     1

如果您从另一个函数中获取B 变量作为单元格,您可以使用cell2mat 将其转换为常规矩阵,并将其用作输入,如下所示:

rref(cell2mat(B))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多