【问题标题】:matlab inverse function is not definedmatlab反函数未定义
【发布时间】:2015-01-20 22:32:45
【问题描述】:

我在matlab中有以下代码,但是在使用反函数时出现奇怪的错误:

x = load('E:\myFile1.dat');
y = load('E:\myFile2.dat');    
ones = ones(100,1);
X = [x,ones];
XtX = X'*X;
XtXinv = inverse(XtX);
XtY = x' * y;
w = XtXinv * XtY;


??? Undefined function or method 'inverse' for input arguments of
    type 'double'.

我在 Windows 上“我的文档”的主(默认)matlab 文件夹中创建了脚本。有人说这是因为当前目录不好。但我的脚本文件只是在“我的文档”中。有什么帮助吗?

【问题讨论】:

  • inverse 不是 Matlab 函数。
  • 但是inv 是,如果您尝试计算矩阵逆。尽管您可以尝试使用w = XtX \ XtY;,而改用mldivide。此外,将ones 函数重新定义为变量可能不是一个好主意。
  • 只是另一条评论。由于数值不稳定,单独计算逆通常是一个坏主意。你绝对应该使用@horchler 所说的mldivide。约翰库克给出了一个很好的论据来解释为什么你应该避免找到逆。在这里阅读:johndcook.com/blog/2010/01/19/dont-invert-that-matrix
  • 感谢 horchler 和 rayryeng 的出色解释解决了我的问题。

标签: matlab


【解决方案1】:

没有 MATLAB 函数 inverse。您几乎肯定想改用函数inv

但是,正如其他人所提到的,出于数值稳定性的原因,直接使用 inv 通常不是一个好主意 - 最好使用 \/ 来计算最终答案。

【讨论】:

    猜你喜欢
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多