八度到Java-初始化Tas函数

八度到Java-初始化Tas函数,java,octave,Java,Octave,嗨,伙计们,我是java新手。 我正在尝试将中的一个倍频程函数转换为Java(使用JBlas),但我不确定如何执行这一行: OCTAVE: Thetas{i} = rand(sizes(i+1), sizes(i) + 1)*2*EPSILON-EPSILON; 我的Java代码: public class InitializeThetas { public static DoubleMatrix InitializeThetas(DoubleMatrix sizes, doubl

嗨,伙计们,我是java新手。 我正在尝试将中的一个倍频程函数转换为Java(使用JBlas),但我不确定如何执行这一行:

OCTAVE: Thetas{i} = rand(sizes(i+1), sizes(i) + 1)*2*EPSILON-EPSILON; 
我的Java代码:

public class InitializeThetas {

    public static DoubleMatrix InitializeThetas(DoubleMatrix sizes, double epsilon)
    {
       int L= sizes.length;
       epsilon = 0.03;
       DoubleMatrix Thetas = new DoubleMatrix(new double[]{});
       Random r = new Random();

        for (int i = 1; i <= L - 1; i++) 
        {
            //Thetas{i} = rand(sizes(i+1), sizes(i) + 1)*2*EPSILON-EPSILON;

            Thetas.data[i]= r.nextInt() * 2 * epsilon - epsilon; 
        }
       return Thetas;
    } 
}
public类初始化etas{
公共静态DoubleMatrix InitializeTas(双矩阵大小,双ε)
{
int L=尺寸。长度;
ε=0.03;
DoubleMatrixθ=新的DoubleMatrix(新的double[]{});
随机r=新随机();

对于(inti=1;i这是否接近您想要的

public class InitializeThetas {

    public static Collection<DoubleMatrix> InitializeThetas(DoubleMatrix sizes, double epsilon)
    {
        int L= sizes.length;
        epsilon = 0.03;
        Collection<DoubleMatrix> Thetas = new ArrayList<DoubleMatrix>();

        for (int i = 0; i < L - 1; i++)
        {
            Thetas.add(DoubleMatrix.rand(Double.valueOf(sizes.get(i + 1)).intValue(), Double.valueOf(sizes.get(i)).intValue() + 1).mul(2).mul(epsilon).sub(epsilon));
        }
        return Thetas;
    }

    public static void main(String[] args) {
        DoubleMatrix soze = new DoubleMatrix(10);
        for(int i = 0;i<10;i++){
            soze.put(i,i+1);
        }
        System.out.println(InitializeThetas(soze,1.1));
    }

}
public类初始化etas{
公共静态集合InitializeTas(双矩阵大小,双ε)
{
int L=尺寸。长度;
ε=0.03;
集合θ=新数组列表();
对于(int i=0;i对于(int i=0;i)你有什么问题?我如何将这部分rand(大小(i+1)、大小(i)+1)转换为java?不确定我是否正确阅读了这篇文章。θ应该是一个三维矩阵吗?不。是一个双维矩阵。但我不知道rand(大小(i+1)、大小(i)+1)是什么抱歉,在倍频程中是这样的。我猜是在行和列上随机数,但我不确定。文档不好。我的理解是它将返回一个维度矩阵(大小(I+1),大小(I)+1),谢谢你是对的,但我在转换这行时遇到问题://倍频程θ{I}=rand(大小(I+1),大小(I)+1)*2*EPSILON-EPSILON;Thetas.data[i]=r.nextInt()*2*EPSILON-EPSILON;yessss…谢谢@BevynQ。你真的帮了很多忙。非常感谢你…你解决了我的第一个问题=)