首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用似Matlab的方式初始化ejml中的向量

用似Matlab的方式初始化ejml中的向量
EN

Stack Overflow用户
提问于 2015-05-15 08:27:54
回答 2查看 1.6K关注 0票数 1

在Mablab/Octave中,我可以创建一个具有范围样式的新向量,例如:

v = [1:10];

但是,当我将它放入ejml方程(Java)中时,它不起作用:

eq.process("v = [1:10]");

它只适用于显式初始化,如:

eq.process("v = [1 2 ]");

有人能这样做吗,或者建议我解决这个问题?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-15 10:17:16

要处理矩阵和向量,可以使用普通的java运算符和循环,这里是一个求解线性系统的例子,添加元素,然后设置范围向量列和行。

我希望这对你有帮助

代码语言:javascript
复制
import org.ejml.factory.SingularMatrixException;
import org.ejml.simple.SimpleMatrix;

/**
 * Created by anquegi on 15/05/15.
 */
public class TestEjml {



    public static void main(String args[]){

        //Solving a system
        SimpleMatrix A = new SimpleMatrix(2,2);
        SimpleMatrix b = new SimpleMatrix(2,1);
        SimpleMatrix x;


        // Can assign values the usual way

        A.set(0,0,1);
        A.set(0,1,4);
        A.set(1,0,1);
        A.set(1,1,1);

        b.set(0,0,28);
        b.set(1,0,10);


        try {
            x = A.solve(b);
            System.out.println(x);
        } catch ( SingularMatrixException e ) {
            e.printStackTrace();
        }

        // So to do a Range
        SimpleMatrix my_range_v = new SimpleMatrix(10,1);

        for (int i = 0; i < my_range_v.numRows(); i++) {
            my_range_v.set(i,i); // you can set also wit set(row,col,value)
        }

        // So to do a Range
        SimpleMatrix my_range_h = new SimpleMatrix(1,10);



        for (int i = 0; i < my_range_h.numCols(); i++) {
            my_range_h.set(i,i); // you can set also wit set(row,col,value)
        }

        System.out.println(my_range_v);
        System.out.println(my_range_h);



    }

}

其结果是:

输入号码:2

代码语言:javascript
复制
[info] Running ejml.TestEjml 
Type = dense real , numRows = 2 , numCols = 1
 4,000  
 6,000  

Type = dense real , numRows = 10 , numCols = 1
 0,000  
 1,000  
 2,000  
 3,000  
 4,000  
 5,000  
 6,000  
 7,000  
 8,000  
 9,000  

Type = dense real , numRows = 1 , numCols = 10
 0,000   1,000   2,000   3,000   4,000   5,000   6,000   7,000   8,000   9,000  

[success] Total time: 2 s, completed 15/05/2015 12:16:20
票数 1
EN

Stack Overflow用户

发布于 2018-05-10 13:27:20

实际上这段代码

代码语言:javascript
复制
eq.process("A = [1:5]");
DMatrixRMaj A = new DMatrixRMaj(eq.lookupMatrix("A"));

送回

代码语言:javascript
复制
Type = dense64 real , numRows = 1 , numCols = 5
 1,000  2,000  3,000  4,000  5,000 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30254901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档