【发布时间】:2015-11-14 22:25:39
【问题描述】:
我在 Matlab 中编写了以下问题来获取数字的前 3 位。
设 x 为实数。
function [y]=mifl(x) % mifl=my float
s=num2str(x);
y=sscanf(s(1:4),'%f');
end
所以函数 mifl 返回一个数字的前 3 位。 例如,
mifl(pi)=3.14
但是当我尝试将此函数应用于向量 v 的所有值时,我得到“索引超出矩阵维度”。我不知道为什么。
我用过
v=linspace(0.1, 99.9, 1000);
w=[]
for i=1:5
w(i)=mifl(v(i))
end
那是我得到“索引超过矩阵尺寸”的时候。
最后,我想要的是,给定一个向量
v=linspace(0.1, 99.9, 1000);
得到一个向量
w=[mifl(0.1),...mifl(99.9)]
【问题讨论】:
-
只是一个问题,你的意思是你想要返回前 3 位数字还是你的意思是你想要 3 位有效数字?这样输入 1234567 将返回 1230000。
-
我只考虑 0.1 到 99.9 之间的数字(这些都是这个问题的所有可能值),所以我认为这个函数定义得很好。
-
对不起,我没有批评的意思。如果听起来那样,我很抱歉。我的观点是,如果您想要 3 个有效数字,则有一个 Matlab 解决方案。看我的回答。
-
哦,完全不用道歉。感谢您的回答。该程序将数字 x(例如 pi)返回为浮点数系统中的一个数字,该数字以 10 为底,精度为 3,指数介于 -1 和 1 之间(在示例 3.14 中)。对于超出该范围的数字,函数中有一条错误消息。
-
另外我还需要考虑用chop四舍五入,比如2.347和2.341变成2.34。