Java可以在while循环中使用matlab绘图功能来动态绘制点并将变化保持在一个图形中,而不是每次都创建一个新的数字吗?

时间:2018-06-08 14:55:18

标签: java matlab

我的matlab-java混合编程有问题。我将一个名为plotDisData.m的matlab m文件打包到一个java文件中,该文件包含该文件。

  hold on
  plot(dx, dy,'ob')

我在我的java代码中使用了这个jar文件:

public void server(MathUtil mu) throws IOException, MWException {

        int port = 8888;
        ServerSocket server = new ServerSocket(port);
        while(true) {
            if(mu.getDisplacement().size() == 150)break;
            System.out.println("server waiting for you");
            Socket socket = server.accept();

            InputStream inputStream = socket.getInputStream();
            byte[] bytes = new byte[1024];
            int len;
            StringBuilder sb = new StringBuilder();
            while ((len = inputStream.read(bytes)) != -1) {
              sb.append(new String(bytes, 0, len,"UTF-8"));
            }
            System.out.println("get message from client: " + sb);
            JSONObject jobj = (JSONObject)JSONObject.parse(sb.toString());
            Accelerometer accel = new Accelerometer();

            accel.setAx(jobj.getDoubleValue("ax"));
            accel.setAy(jobj.getDoubleValue("ay"));
            accel.setAz(jobj.getDoubleValue("az"));
            mu.computeVelocity(accel);
            Displacement dis = mu.computeDisplacement(accel);

            dx = dis.getDx();
            dy = dis.getDy();

            MatlabPlotter mp = new MatlabPlotter();
            mp.plotDisData(dx, dy);


            socket.getOutputStream().write(dis.toString().getBytes());
            socket.getOutputStream().flush();
            List list = mu.getDisplacement();
            System.out.println("get message from client: " + sb);

            inputStream.close();
            socket.close();
            server.close();
        }
  }

我把这个java代码放在while循环中并保持绘图点(dx,dy)。这段代码每次创建一个图形来绘制新点,但我想要的是在一个图中绘制所有点。 虽然我把'#34;抓住"在matlab代码中命令,似乎这在java中不起作用。有谁知道如何解决这个问题?这几乎杀了我......

0 个答案:

没有答案