所要解决的问题描述
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中进行画图。结果如下所示