Matlab 逆矩阵警告

Matlab 逆矩阵警告,matlab,Matlab,在Matlab中工作时,我收到以下警告 警告:矩阵接近单数或比例严重。结果可能不准确。RCOND=6.001064e-34 这是我的密码 clear clc P = []; X = importdata('MSFT.csv',','); P = [P X.data(:,5)]; X = importdata('ORCL.csv',','); P = [P X.data(:,5)]; X = importdata('TEVA.csv',','); P = [P X.data(:,5)]; TC

在Matlab中工作时,我收到以下警告

警告:矩阵接近单数或比例严重。结果可能不准确。RCOND=6.001064e-34

这是我的密码

clear
clc

P = [];
X = importdata('MSFT.csv',',');
P = [P X.data(:,5)];
X = importdata('ORCL.csv',',');
P = [P X.data(:,5)];
X = importdata('TEVA.csv',',');
P = [P X.data(:,5)];

TCR = {'msft', 'orcl', 'teva'};
N = 252;

r_ar = P(2:end, :)./P(1:end-1, :) - 1;
mu_d = mean(r_ar(1:end, :));
sigma_d = cov(r_ar(1:end, :));

mu_a = (mu_d + 1).^N -1;
sigma_a = 
   (sigma_d + (mu_d'+1)*(mu_d+1)).^N - (mu_d'+1).^N * (mu_d+1).^N;

rho =inv(sqrt(diag(diag(sigma_a))))*sigma_a*inv(sqrt(diag(diag(sigma_a))));

mu = mu_a';
S1 = inv(sigma_a);
警告是针对线路发出的

S1 = inv(sigma_a);

因为我需要取sigma_a矩阵的倒数,有没有办法修正这个警告?它影响了我代码的其他部分。

看看你的工作区。是
sigma_a
a
nxm
矩阵还是只有一个整数值?因为如果只是一个值的话,我会期待这样的警告。如果没有,你能发布一下
sigma\u a
的样子吗

编辑:
使用
mldivide
代替
inv

sigma\u a是一个10x10的矩阵。是否只有两个值?这个问题是重复的。显然你的矩阵没有逆矩阵。这只是一个数学问题,不是程序问题。使用
mldivide
而不是
inv
欢迎使用堆栈溢出!这实际上是一个评论,而不是一个答案。再重复一点,。使用
inv()
时给出的警告仅适用于节日橙色线条。阅读它,并付诸行动。我想在其他评论中补充一点,计算
inv
通常不是正确的方法,因为通常不需要逆运算。通常,逆运算用于求解线性方程组等,在这种情况下,如前所述,应使用
mldivide
。有时,您不需要反转,而是一个伪反转(另请参见:
pinv
)。在最小二乘法中,
(M.*M)\M.
用于非平方矩阵。最后,我们需要知道在计算逆矩阵之后,你们打算对它们做什么,以确定给你们什么建议。