使用matlab对2020版CST导出的txt画图文件处理使之适用于origin画图 | 您所在的位置:网站首页 › Cst模型导出图片 › 使用matlab对2020版CST导出的txt画图文件处理使之适用于origin画图 |
所要解决的问题描述
cst仿真完成后,在originlab中导入从cst导出的画图txt文件,会导致不同的曲线被识别为同一条曲线。 显然这样的图表与我们的报告论文中的绘图要求不符,而分别导出每一条曲线的操作导出又过于繁琐。简化这一过程最直接的方法是通过联合仿真解决(我一就是这样做的),直接使用python的matplotlib进行绘图。联合仿真方法cst的帮助文档中有详尽描述。 但是由于word中插入originlab对象具有可编辑的功能,所以你的导师可能会要求你使用originlab。这就需要对cst导出的画图文件进行处理。 我们使用matlab对cst导出的txt文件进行处理。 下面展示用于处理的 matlab代码。PS. 我用的matlab版本为2021a。 filename = 'FSR.txt'; %CST导出的绘图文件的文件名 atext = readlines(filename); %读入文件 sa = atext; index = find(atext==''); % 使用空白行分隔曲线,首先获取空白行的索引 atext(index(length(index)))=[]; % 去除最后一行空白行 ctext = []; length1 = index(2)-index(1)+3; for i = length(index)-1:-1:2 disp(i); temp = []; if (index(i)-index(i-1)) ~= length1 counter = index(i)-index(i-1); for j = 1:abs(length1-(index(i)-index(i-1))) temp = [temp;atext(index(i)-1)]; disp(temp) end end ctext = [ctext,[atext(index(i-1):index(i)-1);temp]]; end %提取从第二条曲线开始的曲线并按列排列。 temp = []; for i = 1:3 temp = [temp;atext(index(1)-1)]; end ctext = [ctext,['';atext(1:index(1)-1);temp]];%加入第一条曲线 ctext(1,:) = []; ctext(2,:) = []; h = size(ctext); ctext(h(1),:) = []; btext = regexp(ctext, '\s{3,}', 'split'); mc = vertcat(btext{:}); mc2 = reshape(mc,length1-3,[]); mc3 = mc2(:,h(2)*2:h(2)*3); mc3 = [mc3(:,1) , mc3(:,end:-1:2)];%由于reshape的时候进行了倒序,因而这里也倒序恢复它本来的顺序 writematrix(mc3,'plot.xls');%写入excel表格进行处理后将程序生成的xls文件导入originlab中进行画图。结果如下所示 |
CopyRight 2018-2019 实验室设备网 版权所有 |