如何提取对数坐标图的数据

前言

在使用论文或数据手册图表数据时,会遇到使用对数坐标的时候,比如这样:

图一

在使用传统提取图片数据的工具时,如Matlab工具GRABIT,在提取坐标轴起止点后,默认为等间距坐标,提取点的坐标是错误的,提取的数据应该怎么处理呢?

一、对数坐标图是什么?

在横轴x和(或) 纵轴y上应用以 10 为底的对数刻度来绘制 x 和 y 坐标,这样做有两点好处:

1、将非线性变为线性的;

2、快速稳态的系统前段放大。

二、如何提取对数坐标数据

1.传统工具提取坐标数据

使用Matlab个人工具GRABIT按照流程提取曲线数据,如图一最上一条线,并plot画出结果:

rawdata=[0.0260371494556469,0.742680366660025;1.09473747377527,0.751733705642372;2.18568227000611,0.793910897452027;3.23912224734658,0.861561018536338;3.92610308134241,0.975024329071863;4.65045272400598,1.08849240001278;5.17305160293051,1.19429145786055;5.68830592983298,1.27588575843119;6.29336100622729,1.33583544774673;6.94339466324552,1.37031315986869;7.92986320696271,1.38317767941118;8.78180403947600,1.39602506149424;9.46187555416219,1.40375500777646;9.94763606428723,1.41018631546662];
figure
plot(rawdata(:,1),rawdata(:,2))
grid on

显然提取点横坐标是与原图对不上的,下面进行修正

2.修正数据

建立logax2linax函数

function y=logax2linax(a_min,a_max,x) % a_min:坐标最小点 a_max:坐标最大点 x:原始提取点数据
    a_part=log10(a_max/a_min);                
    ya=fix(x/(a_min+(a_max-a_min)/a_part))+1;
    y=10.^((x-(a_max-a_min)/a_part.*(ya-1))/((a_max-a_min)/a_part)).*10.^-(a_part-ya);
end

修正数据并做图比较:

x=logax2linax(1e-5,10,rawdata(:,1));

figure
subplot(2,1,1)
plot(rawdata(:,1),rawdata(:,2))
grid on
subplot(2,1,2)
semilogx(x,rawdata(:,2))  %matlab画x轴对数坐标
grid on

完美贴合!


总结

算法很简单,双对数坐标利用工具将y轴处理下,也希望读者有更好的解决方法,更多的问题一起留言讨论,大家多多关注!

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Superzhen007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值