matlab求解矩阵,可否限定矩阵中的数的取值范围我想用matlab来求解一个矩阵(马尔可夫转移矩阵),可是求解出的结果有误差,经检查在允许范围内.后来发现,矩阵中的数都要求在[0,1]之间,请问

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 11:04:32

matlab求解矩阵,可否限定矩阵中的数的取值范围我想用matlab来求解一个矩阵(马尔可夫转移矩阵),可是求解出的结果有误差,经检查在允许范围内.后来发现,矩阵中的数都要求在[0,1]之间,请问
matlab求解矩阵,可否限定矩阵中的数的取值范围
我想用matlab来求解一个矩阵(马尔可夫转移矩阵),可是求解出的结果有误差,经检查
在允许范围内.后来发现,矩阵中的数都要求在[0,1]之间,请问用matlab可否对此做限
制,比如让小于0的数取为0,大于1的数取为1?
请问可以再具体点吗?提供具体的代码之类的。
之前我的代码是:
A=[75,0,0,17.5,0,0,7.5,0,0;0,75,0,0,17.5,0,0,7.5,0;64.5,0,0,24,0,0,11.5,0,0;0,64.5,0,0,24,0,0,11.5,0;55.5,0,0,29.2,0,0,15.3,0,0;0,55.5,0,0,29.2,0,0,15.3,0;1,1,1,0,0,0,0,0,0;0,0,0,1,1,1,0,0,0;0,0,0,0,0,0,1,1,1]
b=[64.5;24;55.5;29.2;47.7;33.2;1;1;1]
X=A\b
得到的结果是:
X =
0.8546
0.0913
0.0541
0.0854
1.0554
-0.1408
-0.1454
-0.1754
1.3208
对于zhjstef的回答的话,我之前想过觉得是不行的,因为计算过程中,如果前面的值被强制改为0或者1了,那么后面的值肯定也会变化的。如果仅仅在计算结果出来之后再去改,那肯定就有很大的误差了阿。
我的想法是:已知A和b求出X。
但是希望求出的X中的值都在[0,1]之间。如果超出了范围就将他们约束在这个范围内。又不是简单的设置为0和1。
因为比如将1.0554强制为1后,其他的值肯定要有变化了。
不知道该怎么办?

matlab求解矩阵,可否限定矩阵中的数的取值范围我想用matlab来求解一个矩阵(马尔可夫转移矩阵),可是求解出的结果有误差,经检查在允许范围内.后来发现,矩阵中的数都要求在[0,1]之间,请问
没看懂你这是转移概率矩阵还是转移速度矩阵
概率矩阵的话,无论几次方还是满足0,1的啊,无需特意限制
速度矩阵的话,大于1了就大了呗,有对应理论...

可以啊,实现元素访问,A(find(A>1)),就可以找到矩阵A里大于1的元素,然后把他们赋值为1就行了

X=A\b,这是一个左除的问题,相当于AX=b,故应该是X=inv(A)*b,你这里所说的究竟是要对哪一个矩阵的值进行限定?

x=(x<1).*x;
x=(x>0).*x;
难道我的不够明白么?你要的到底是什么数满足0-1条件?如果是x,那么就用我的式子,如果是其他,请参照x的思路