1 optisystem软件介绍

  • OptiSystem是一种创新的光通信系统仿真软件,可以帮助用户完成从视频广播系统到洲际骨干网的宽光谱光网络中物理层的设计,测试与模拟。OptiSystem是一个独立的产品,它不依赖于其他仿真框架。它是基于光纤通信系统实际建模的系统级仿真软件。它拥有强大的仿真环境以及元件和系统的分层定义。通过添加用户组件,可以轻松扩展其功能,并且可以无缝连接到各种工具。综合图形用户界面(GUI)控制光学元件布局,组件模型以及表示图形。

上面其实都是我说的废话,哈哈哈!!!下面是我的正文

2 optisystem联合matlab仿真

  • 最近在帮一个学光通信的哥们调代码,他的问题就是“不知道如何利用matlab批量保存Optisystem生成的实验结果”,我听都没听过这个Optisystem软件,起初我是拒绝的,后面那位学通信的哥们说他会Optisystem软件,不会matlab,那我就答应下来了。然后就开始了我和那哥们的折磨之旅。由于optisystem是直接调用matlab,生成的图片窗口,在matlab命令窗口都无法直接关闭,我就按照写for 循环来进行重命名,结果出现了每次命名的序号都是1,且只保存最后一张命名。后面查看了optisystem调用matlab的方式,原来是每生成一张图片都会去重新调用程序,这结果就导致生成的图片每次都是命名序号为1,仅仅覆盖保存了最后一张生成的实验结果图片。
    经过测试,有以下几种思路可以提供相关参考:
  1. 生成随机数来命名图片;
OutputPort1 = InputPort1;%创建输出端口信号结构
x = real(InputPort1.Sampled.Signal);
y = real(InputPort2.Sampled.Signal);
A=randperm(10000);%%生成随机数,如果要创建不同类型的图像;A取1~1000;1001~2000;3001~4000;
%%第一类为1:1000
A(A>1000)=[];%按照这个命名第一类
%%第二类为1001:2000
A(A<1000)=[];
A(A>2000)=[];
%按照这个命名第二类
path = 'H:\fanzhen\OPM\data';
name = strcat('train',num2str(A(1)));%保证命名方式不统一,确认不会重新覆盖
fullname = fullfile(path,name);
scatter(x,y,'k');
saveas(gcf, fullname,'png');
close all;%%关闭图片展示窗口;
  1. 在保存之前判断保存的文件名是否存在,若存在,则直接序号+1;
path = 'H:\fanzhen\OPM\data';%路径
for i=1:100%保存文件数
name = strcat('train',num2str(i);%按顺序命名
fullname = fullfile(path,name);%组合
if~exist(fullname,'file')%判断文件是否存在
saveas(gcf, fullname,'png');%若不存在,则直接保存
close all;%关闭当前命名窗口
end%直到出现没有命名的窗口
end
  1. 定义全局变量;
global i%这里我没有进行测试,不确定Optisystem软件每次调用会不会清空环境变量,仅仅提供一种思路

3 结语

通过上述几种方式可以简单实现批量保存图片。