如何将所有浮点元素转换为向量的整数元素
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
。
我有一个问题需要你的帮助。我有一个向量,例如
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
。