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

How to convert all float element to integer element of a vector

我有一个问题需要你的帮助。我有一个向量,例如

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 有找到它的功能吗?非常感谢

您可以使用函数 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