gpt4 book ai didi

java版的matlab的linspace

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:05 28 4
gpt4 key购买 nike

matlab 的冒号运算符或linspace 有Java 版本吗?例如,我想为均匀间隔的数字创建一个 for 循环,但我不想手动创建这些数字的数组。

例如,要获取从 1 到 30 的所有整数,在 matlab 中我会键入:

1:30

linspace(1,30)

最佳答案

对于两个变量调用,@x4u 是正确的。三变量调用将更难模拟。

例如,我认为 linspace(1,30,60) 应该产生值 1、1.5、2、2.5、3、3.5...,或者这可能是 linspace(1,30,59) 的值- - 无论哪种方式,同样的问题。

使用这种格式,您必须自己进行计算——就我个人而言,我会创建一个新对象来为我完成所有事情,而忘记 for 循环。

counter=new Linspace(1,30,60);
while(counter.hasNext()) {
process(counter.getNextFloat())
}

或者只是

while(float f : new Linspace(1,30,60)) {
process(f);
}

如果您有 Linspace 对象实现 Iterable。

那么计数器对象的内部应该很容易实现,它会很容易地告诉你它在做什么,而不用用一堆数字计算来混淆你的代码来计算比率。

一个实现可能是这样的:(注意:未经测试,我很确定这很容易受到边缘情况和浮点错误的影响!它也可能不会处理 end < start 以进行倒退计数,这只是一个让你继续前进的建议。)

public class Linspace {
private float current;
private final float end;
private final float step;
public Linspace(float start, float end, float totalCount) {
this.current=start;
this.end=end;
this.step=(end - start) / totalCount;
}
public boolean hasNext() {
return current < (end + step/2); //MAY stop floating point error
}
public float getNextFloat() {
current+=step;
return current;
}
}

关于java版的matlab的linspace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208878/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com