如何将所有float元素转换为向量的整数元素

时间:2015-01-07 18:44:43

标签: matlab

我有一个需要你帮助的问题。我有一个像

这样的矢量
P=[ -0.0610    0.1219    0.2439   -0.1829 ]

类似
P =[-242/3969 484/3969 968/3969 -242/1323]

现在我想将P的所有系数转换为整数,这意味着我必须找到P的前导系数c,使得f = P / c的所有元素都是整数 我们可以找到c = -3969 / 242,f是

   f=P/c=[1 -2 -4 3]

但是,我不知道如何找到系数c。 matlab有一些功能可以找到吗?非常感谢你

1 个答案:

答案 0 :(得分:2)

您可以使用函数rat近似有理分数:

[N,D] = rat(P)

此处P=N/D

由于@BenVoigt报告的原因,实际示例有点棘手,我们假设您知道N=[-242 484 968 -242]D=[3969 3969 3969 1323]。如果您有Symbolic Math工具箱,可以使用lcm功能立即解决它。如果你不这样做,你可以做类似的事情:

LCMD=1;
for k=1:numel(D)
    LCM=lcm(LCM, D(k));
end 

GCDN=gcd(abs(N(1)), abs(N(2)));
for k=1:numel(N)-2
   GCDN=gcd(GCDN, abs(N(k+2)));
end

c将是LCMD/GCDN