Origin数据扣背底-matlab快速操作

Origin数据扣背底-matlab快速操作

问题来源

因为WAXS数据通过Fit2D软件处理得到样品和背底的一维积分数据,存在origin里面,要想扣背底需要在origin内逐列操作,这是麻烦的,所以想到用matlab处理庞大的矩阵。

代码

clear
close all
n = input('ctrl+A全选表格,请输入数据原文件的行数:');
m = input('请输入数据原文件的列数-字母组合:'); % 示例:'AA'
m1 = getColumnNumber(m);
A = zeros(n, m1);%预存原数据
replay = input('-------*****将origin的原始数据全部复制到A中,操作完成后,输入任意数继续*****-------:');
B = zeros(n, m1);%预存背底数据
replay = input('-------*****将origin的背底数据全部复制到B中,操作完成后,输入任意数继续*****-------:');
x1 = A(:,1); %第一列
g = 1;  %扣背底数据的倍数
Z = A - g*B;
Z(:, all(Z==0)) = [];  %删除全0列
p = size(Z,2); %可以得到列数n
Z1 = [x1,Z];
save('test.mat','Z1')
%save('test.mat','Z1','Z')
figure %预览图
for j = 1:p
     plot(x1,Z(:,j),'LineWidth',1.5);
     hold on
end
disp("-------*****打开Z1,Z1即为扣完背底的数据,将Z1的全部数据全部复制到origin中或者File->Import->Matlab(Mat),即可绘图*****-------"); 


//根据origin/Excel的列标号(字母)求列数的子函数
function columnNumber = getColumnNumber(columnLabel)
    % 将列标号的字母转换为大写形式,eg.columnLabel='AA'/'aa'
    columnLabel = upper(columnLabel);
    
    % 计算列标号对应的列数
    columnNumber = 0;
    for i = 1:length(columnLabel)
        columnNumber = columnNumber * 26 + (columnLabel(i) - 'A' + 1);
    end
end

上面即为我所编写的交互代码,比较粗陋,仅供参考。

使用说明

1、知道数据矩阵的行数,列标号
2、复制样品数据到A矩阵,点击继续,并输入任意数字继续
3、复制背底数据到B矩阵,点击继续,并输入任意数字继续
4、g为背底系数,可在程序内修改
5、保存了带有角度数据和扣完背底的数据Z1在test,mat中,将Z1的全部数据全部复制到origin中或者File->Import->Matlab(Mat)导入test.mat即可绘图

示例图片

matlab图片:
matlab处理完的数据
origin图片:
在这里插入图片描述

加油!各位!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值