Matlab图形问题(读取坐标点)如下图中红点所示,我想读取该点的坐标,可是纵坐标读取出的却是0.能不能提高一下读取的精度,因为从图中也可以看出来,该点纵坐标肯定不为零的.或者有其他办
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/26 03:21:27
![Matlab图形问题(读取坐标点)如下图中红点所示,我想读取该点的坐标,可是纵坐标读取出的却是0.能不能提高一下读取的精度,因为从图中也可以看出来,该点纵坐标肯定不为零的.或者有其他办](/uploads/image/z/5615305-25-5.jpg?t=Matlab%E5%9B%BE%E5%BD%A2%E9%97%AE%E9%A2%98%EF%BC%88%E8%AF%BB%E5%8F%96%E5%9D%90%E6%A0%87%E7%82%B9%EF%BC%89%E5%A6%82%E4%B8%8B%E5%9B%BE%E4%B8%AD%E7%BA%A2%E7%82%B9%E6%89%80%E7%A4%BA%2C%E6%88%91%E6%83%B3%E8%AF%BB%E5%8F%96%E8%AF%A5%E7%82%B9%E7%9A%84%E5%9D%90%E6%A0%87%2C%E5%8F%AF%E6%98%AF%E7%BA%B5%E5%9D%90%E6%A0%87%E8%AF%BB%E5%8F%96%E5%87%BA%E7%9A%84%E5%8D%B4%E6%98%AF0.%E8%83%BD%E4%B8%8D%E8%83%BD%E6%8F%90%E9%AB%98%E4%B8%80%E4%B8%8B%E8%AF%BB%E5%8F%96%E7%9A%84%E7%B2%BE%E5%BA%A6%2C%E5%9B%A0%E4%B8%BA%E4%BB%8E%E5%9B%BE%E4%B8%AD%E4%B9%9F%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%87%BA%E6%9D%A5%2C%E8%AF%A5%E7%82%B9%E7%BA%B5%E5%9D%90%E6%A0%87%E8%82%AF%E5%AE%9A%E4%B8%8D%E4%B8%BA%E9%9B%B6%E7%9A%84.%E6%88%96%E8%80%85%E6%9C%89%E5%85%B6%E4%BB%96%E5%8A%9E)
Matlab图形问题(读取坐标点)如下图中红点所示,我想读取该点的坐标,可是纵坐标读取出的却是0.能不能提高一下读取的精度,因为从图中也可以看出来,该点纵坐标肯定不为零的.或者有其他办
Matlab图形问题(读取坐标点)
如下图中红点所示,我想读取该点的坐标,可是纵坐标读取出的却是0.能不能提高一下读取的精度,因为从图中也可以看出来,该点纵坐标肯定不为零的.或者有其他办法可以办到吗?
还有一个小问题,在Matlab中用公式计算误码率,计算到一定程度就直接显示零了(这个不是读图读出的,而是在Matlab的窗口栏中直接看到的,应该是计算来的),想问一下精度能不能提高,就是小数点后多读几位...
Matlab图形问题(读取坐标点)如下图中红点所示,我想读取该点的坐标,可是纵坐标读取出的却是0.能不能提高一下读取的精度,因为从图中也可以看出来,该点纵坐标肯定不为零的.或者有其他办
首先声明一点,format这个函数不是用于控制运算精度的,它只能控制结果显示类型.运算的时候还是用matlab自己的精度,具体是多少就不知道了.
matlab控制运算精度用的是digits和vpa这两个函数.
digits用于规定运算精度,比如:
digits(20);
这个语句就规定了运算精度是20位有效数字.但并不是规定了就可以使用,因为实际编程中,我们可能有些运算需要控制精度,而有些不需要控制.vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数.例如:
digits(5);
a=vpa(sqrt(2));
这样a的值就是1.4142,而不是准确的1.4142135623730950488016887242097.
又如:
digits(5);
a=vpa(sqrt(2));
b=sqrt(2);
这样a的值是1.4142,b没有用vpa函数,所以b是1.4142135623730950488016887242097.
vpa函数对其中每一个运算都控制精度,并非只控制结果.
digits(11);
a=vpa(2/3+4/7+5/9);
b=2/3+4/7+5/9;
a的结果为1.7936507936,b的结果为1.793650793650794.也就是说,计算a的值的时候,先对2/3,4 /7,5/9这三个运算都控制了精度,又对三个数相加的运算控制了精度.而b的值是真实值,对它取11位有效数字的话,结果为1.7936507937,与a不同,就是说vpa并不是先把表达式的值用matlab本身的精度求出来,再取有效数字,而是每运算一次,都控制精度.我举的例子不太好,因为加法不太会增加数字位数.希望大家能理解我的意思.
vpa对它括起来的运算每一次都控制精度,但有一点需要注意,vpa对函数的参数不起作用.
举一个例子:
digits(5);
a=vpa(sqrt(2/3));
b=vpa(sqrt(vpa(2/3)));
结果a为0.81649,b为.81650.sqrt是一个函数,2/3是参数,也就是说,a式中,vpa对2/3是不起作用的,只对sqrt函数的返回值作用.如果想达到2/3的精度也要控制的效果,就要用b式,对参数也使用vpa函数.
还有一点,digits这个函数不是必需的,vpa可以这样用:
vpa(表达式,运算精度);
举例来说:
vpa(pi,5);
和
digits(5);
vpa(pi);
结果是一样的,vpa不指定运算精度,就用digits函数指定的.如果也没有用digits函数,那好象就是按matlab本身的精度来算的吧,这点我没试验,觉得不重要.