IDEA调用MATLAB计算生成figure并保存为图片

将图窗保存为特定文件格式。

  1. 命令
  • saveas(fig,filename)
    将 fig 指定的图窗或 Simulink® 模块图保存到 filename 文件中。将文件名指定为字符向量或字符串,包括文件扩展名,例如 ‘myplot.jpg’。文件扩展名用于定义文件格式。如果不指定扩展名,则 saveas 会将图窗保存为 FIG 文件。要保存当前图窗,请将 fig 指定为 gcf。
  • saveas(fig,filename,formattype)
    使用指定的文件格式 formattype 创建文件。如果不在文件名中指定文件扩展名(例如 ‘myplot’),则与指定的格式对应的标准扩展名会自动附加到文件名后面。如果指定了文件扩展名,该扩展名不必与文件格式相匹配。saveas 为该格式使用 formattype,但会将文件保存为指定的扩展名。因此,文件扩展名可能与使用的实际格式不匹配。
  1. 示例
  • 创建条形图并将其另存为 PNG 文件。
x = [2 4 7 2 4 5 2 5 1 4];
bar(x);
saveas(gcf,'Barchart.png')
  • 画sin图像的函数
function out = plotsin(first,step,last)
in=first:step:last;
out=sin(in);
figure('Name','Math Plot','NumberTitle','off');
plot(in,out,'b-');
axis([first last -1.5 1.5]);
grid on;
title('sin');
saveas(gcf,'sinchart1.png')
end

将图窗保存到指定文件路径。

  1. 保存到指定路径
saveas(gcf,['D:/MATLAB/work/img/','sinchart.png']);
  1. 文件名加随机数(一些会经常调用函数产生图像的需求,需要文件名不同才能保存)
saveas(gcf,['D:/MATLAB/work/img/','sinchart' floor(num2str(1000000*rand)) '.png']);
  1. 将路径作为参数输入,文件名作为输出(一些需要用户指定存储路径的需求,并获取图像的需求)。用到取随机数函数rand,取整函数floor,数字转字符串函数num2str,字符串拼接[a,b]等。
function [out,name] = plotsin(first,step,last,path)
in=first:step:last;
out=sin(in);
figure('Name','Math Plot','NumberTitle','off');
plot(in,out,'b-');
axis([first last -1.5 1.5]);
grid on;
title('sin');
randnum = floor(100000000*rand);
name = ['sinchart',num2str(randnum), '.png'];
saveas(gcf,[path,name]);
end

函数调用:
plotsin(0.0,0.01,10*3.1415926,'D:/MATLAB/work/img/')

IDEA实现(通过MATLAB打包jar包)

  1. MATLAB打包jar包:
    ①命令行输入deploytool
    ②选Library Compiler
    ③TYPE选Java Package,函数+所写的函数,修改Class名,点package。
  2. IDEA导入jar包:
    ①File-Project Structure-Libraries-左边列表上面的+后选JAVA。
    ②选择刚才生成的文件夹for_redistribution_files_only中的jar包导入。
    ③需要再导入javabuilder的jar包,路径为matlab路径下\toolbox\javabuilder\jar。
    ④点击OK即可。
  3. jar包使用:
    ①项目中新建Matlabtest.java的Java Class文件。
    ②导入javabuilder.jar中的方法:
    import com.mathworks.toolbox.javabuilder.*;
    ③导入生成的函数jar包的方法:
    import plotsin.Forsin;//Forsin为打包时写的类名
    ④写main方法,其中调用函数:
public static void main(String[] args){
      //matlab方法为[c] = sumTest(a,b)
      //java中方法为matlab实例的方法matlab.sumTest(int,object...),返回值为object[]
      //其中输入的int为输出的个数,object...为输入参数,返回值object[]为输出的集合
      try{
          Forsin f = new Forsin();
          System.out.print("java开始调用Forsin:");
          Object[]g = f.plotsin(2,0.0f,0.01f,10*3.1415926, "D:/MATLAB/work/img/");
          System.out.print("java调用Forsin结束结果为"+g[1]); //g[1]为生成的图像文件名
      } catch (MWException e) {
          e.printStackTrace();
      }
  }

⑤运行该main方法,得到产生的figure,以及保存的图像。

在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值