使用matlab对2020版CST导出的txt画图文件处理使之适用于origin画图

所要解决的问题描述

cst仿真完成后,在originlab中导入从cst导出的画图txt文件,会导致不同的曲线被识别为同一条曲线。
导出plottxt
直接导入CST导出结果

显然这样的图表与我们的报告论文中的绘图要求不符,而分别导出每一条曲线的操作导出又过于繁琐。简化这一过程最直接的方法是通过联合仿真解决(我一就是这样做的),直接使用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中进行画图。结果如下所示
在这里插入图片描述

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值