matlab繪圖(六)-圖像光滑&數據取點

2021-02-21 matlab愛好者

過冷水今天和大家分享一下讀取圖像數據點的小技巧:用cftool插值繪圖得到擬合後的圖像,然後正確獲取擬合圖像對應的數據。

有時候的實驗室數據圖像得到的如下圖所示:

當然之前中過冷水多次有跟大家提多項式擬合、傅立葉級數擬合、高斯級數擬合,實際更加常見的操作是用matlab中圖像擬合工具箱cftool靈活進行函數擬合。

    這個過程大多數讀者應該都有了解,問題在於:「how to get fit data」?首先我們需要先把函數工具擬合方法生成代形式:

function [fitresult, gof] = createFit(x1, y1)%CREATEFIT(X1,Y1)%  Create a fit.%%  Data for 'untitled fit 1' fit:%      X Input : x1%      Y Output: y1%  Output:%      fitresult : a fit object representing the fit.%      gof : structure with goodness-of fit info.%%  另請參閱 FIT, CFIT, SFIT.
% 由 MATLAB 於 06-Sep-2020 19:30:43 自動生成

%% Fit: 'untitled fit 1'.[xData, yData] = prepareCurveData( x1, y1 );
% Set up fittype and options.ft = fittype( 'smoothingspline' );
% Fit model to data.[fitresult, gof] = fit( xData, yData, ft );
% Plot fit with data.figure( 'Name', 'untitled fit 1' );h = plot( fitresult, xData, yData );legend( h, 'y1 vs. x1', 'untitled fit 1', 'Location', 'NorthEast' );% Label axesxlabel x1ylabel y1grid on

生成代碼形式後,對代碼進行簡化,可以得到如下代碼:

clear;x1=[2,2.89795918367347,2.94897959183673,2.97959183673469,2.98979591836735,3.01020408163265,3.03061224489796,3.06122448979592,3.10204081632653,3.14285714285714,3.24489795918367,3.29591836734694,3.34693877551020,3.39795918367347,3.43877551020408,3.48979591836735,3.56122448979592,3.67346938775510,3.82653061224490,4.06122448979592,4.32653061224490,4.65306122448980,5,5.26530612244898,5.56122448979592,5.88775510204082,6.11224489795918,6.33673469387755,6.62244897959184,6.98979591836735,7.47959183673469,7.98979591836735];y1=[0,0.524822695035461,0.978723404255319,1.31205673758865,1.57446808510638,1.82978723404255,2.04964539007092,2.31914893617021,2.63120567375887,2.85815602836879,2.82269503546099,2.59574468085106,2.34042553191489,2.08510638297872,1.87234042553192,1.64539007092199,1.38297872340426,1.11347517730496,0.936170212765958,0.858156028368794,0.900709219858156,0.964539007092199,0.929078014184397,0.829787234042553,0.787234042553191,0.872340425531915,1.02836879432624,1.17730496453901,1.20567375886525,1.07801418439716,0.964539007092199,0.921985815602837];f=fit(x1',y1','smoothingspline');x2=linspace(2,8,100)';y2=f(x2);figure1 = figure;subplot1 = subplot(2,1,1,'Parent',figure1);hold(subplot1,'on');plot(x1,y1,'Parent',subplot1,'LineWidth',2);xlabel('$x$','Interpreter','latex');ylabel('$y$','Interpreter','latex');title('原始數據','Interpreter','latex');set(subplot1,'FontSize',12,'LineWidth',2);subplot2 = subplot(2,1,2,'Parent',figure1);hold(subplot2,'on');plot(x2,y2,'Parent',subplot2,'LineWidth',2);xlabel('$x$','Interpreter','latex');ylabel('$y$','Interpreter','latex');title('插值擬合數據','Interpreter','latex');set(subplot2,'FontSize',12,'LineWidth',2);

這樣(x2,y2)就是我們想要的所有插值擬合數據,還有一種查繪圖數據的方法。

h=plot(x1,y1)x=get(h,'xdata');y=get(h,'ydata');

該段代碼主要是有時候再特殊情況下我們先是得到具體的函數圖像而不是繪圖數據,所以就需要使用該段代碼就有用了。冷水現在再講講如何提取特殊點方法。可以用

[X,Y]=ginput(2)X =    3.2373    3.4171Y =    2.7808    2.2558

    本期過冷水和大家分享的知識容量短小精煉,對於初學者都能夠使用上而不是以往的那些晦澀深奧的知識,希望能夠對讀者有幫助。

往期回顧>>>>>>

matlab動態繪圖

matlab繪圖(五)

520!公眾號抖音【跳動的心】原始碼分享

基於奇怪的羊返航,聊plot圖像鏡像

200多款plot/plot3自定義marker任你選

matlab愛好者公眾號中,回復「QQ」加入公眾號專屬Q群;回復「原創」獲取小編原創代碼;回復「星球」加入資源分享園地知識星球。

如需轉載,請在公眾號中回復「轉載」獲取授權,未經授權擅自搬運抄襲的,必將追究其責任!

相關焦點

  • matlab量化投資基本操作:數據導入與簡單繪圖(1)
    MATLAB這個軟體經過數十個版本迭代,已經成為將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和仿真標準化軟體,所以用它來進行量化投資程序編寫,也是目前國內外的主流應用方式。  matlab內置了很多工具箱,可以省去了matlab編程的過程,實際上是把程序轉換成界面,便於初學者的操作。比如統計工具箱,小波工具箱,神經網絡工具箱等等。
  • 有了這張matlab繪圖速查表,您還用擔心matlab繪圖嗎?
    繪圖速查表,初看文章封面還以是簡單的PS拼湊而成。等進入文章才發現張博士竟然是用純matlab繪製的,而張博士也在其GitHub帳戶中公開了的相關原始碼。除了這張速查表本身對matlab繪圖大有裨益外,繪製出這張的圖原始碼也是非常值得大家研究學習,涉及到界面布局排版、matlab坐標軸操控、文本線形操控等多個matlab繪圖知識。相信如果大家認真研究該原始碼後,對提高大家的matlab繪圖水平肯定是大有幫助。
  • 值得收藏 | 如何用matlab做出酷炫的圖像
    本文承接在matlab入門基礎操作介紹的兩篇推文之後,在matlab入門(下)中介紹了部分繪圖相關的操作,本文首先做一點簡單回顧,
  • MATLAB處理NAN數據程序(含實例)
    1);data2 = data(:,2);data3 = data(:,3);%funnan自定義函數 %輸入:data1是需要處理的數據%輸出% data是處理之後的數據 % stroe是去掉NAN後取鄰近平均值的位置 stroe1是繼續取NAN值的位置 s是取平均值對應的數據[data11,stroe,stroe1,s] = funnan1(data1,m);[data22,stroe2,stroe22
  • matlab繪圖方法
    *cos(pi*x);plot(x,y2);hold off 1.3 設置曲線樣式   MATLAB提供了一些繪圖選項,用於確定所繪曲線的線型、顏色和數據點標記符號,它們可以組合使用。  例如,「b-.」表示藍色點劃線,「y:d」表示黃色虛線並用菱形符標記數據點。
  • MATLAB中的數據插值函數
    插值是在一組已知數據點的範圍內添加新數據點的技術。可以使用插值來填充缺失的數據、對現有數據進行平滑處理以及進行預測等。MATLAB 中的插值技術可分為適用於網格上的數據點和散點數據點。從數學上來說,數據插值是一種函數逼近的方法。
  • TechRepo | Matlab作圖
    axis 用於指定 x 軸和 y 軸的範圍(比如如果有離群值,matlab 默認會將所有數據放入畫面中,不美觀)。還有各種二維作圖函數bar 條形圖errorbar 含誤差條的線圖area 填充區二維繪圖stairs 階梯圖stem 針狀圖(繪製離散序列數據)fplot 繪製表達式或函數polar (不推薦)極坐標圖histogram 直方圖rose 角度直方圖fill
  • matlab科研繪圖模板,拿走不謝【精品乾貨】
    模板的實現原理很簡單,就是通過修改matlab的相關默認設置即可完成,完整步驟如下:1、新建一個名為startup.m的matlab腳本文件,在該文件中添加所有與matlab科研繪圖屬性設置相關的命令;2、將添加所有自定義設置的startup.m文件複製粘貼到指定路徑,路徑如下:matlab
  • 賽前必看,這些必備的Matlab繪圖函數你會了嗎?
    眾所周知,matlab不僅擅長處理與矩陣相關的數值運算,在科學可視化方面,它同樣有著很深的積澱。
  • matlab實現5維數據繪圖
    % 原作者:赫裡斯特·斯託伊奇科夫 % 來源:mathworks官網% 歡迎大家關注matlab愛好者微信公眾號% ID:matlabaihaozheclear all               clc, close all%% 設置圖像渲染方法% set(gcf, 'Renderer
  • MATLAB二維、三維、四維繪圖
    也可以打開數據表格,選中需要繪圖的數據,使用Matlab提供的plot工具條,繪製圖形後,在figure的工具欄中點選添加坐標軸標題、圖表標題等信息。直角坐標 1%二維繪圖示例代碼:直角坐標 2%準備數據 3x = 0:0.01:3*pi;  %pi特殊變量,圓周率 4y1 = sin(x); 5y2 = sin(2*x); 6y3 = sin(3*x); 7%設置當前繪圖區域 8figure; 9%繪圖10plot(x,y1,x,y2,x,y3);
  • 史上最全matlab科研繪圖函數匯總,拿走不謝
    很久以前,小編給大家分享過如何用matlab輸出高質量圖片 (
  • MATLAB基礎課程v2 第二章 MATLAB繪圖知識(8)
    繼續補充講解!
  • 教程合集 | MATLAB繪圖基本操作與屬性
    mod=viewthread&tid=92239利用MATLAB對CALIPSO中VFM數據繪圖與結果討論:by:kongfeng0824http://bbs.06climate.com/forum.php?
  • Matlab數字圖像處理初步
    >數字圖像映射到曲面[x,y,z] = sphere(100);  %生成101層高度的單位球面坐標,每層101X101個點坐標warp(x,y,z,RGB)   %將彩椒圖像映射到球面顯示view(45,-45)   %改變觀察角度,也改變了圖像相對位置數字圖像的亮度與對比度
  • MATLAB繪圖零基礎入門(一)
    上一期的Python爬蟲實踐中,Henry導入了Matplotlib庫進行了新冠疫情的每日新增的繪圖。其實Matplotlib的原型是另一門應用非常廣泛的語言——Matlab。最近Henry也學習了一些Matlab的繪圖技巧,分享給大家~我們先放幾張效果圖~
  • 這10款論文繪圖軟體,除了Matlab,你可能一個都不會,最後一個讓人很無語……
    從大量的數據資料中獲得所需的效果圖,已經有很多前輩們為咱們趟好了路,留下了大量的繪圖軟體及經驗。接下來小編將為大家介紹一些功能強大的繪圖軟體。Matlab只排在第十位是因為本來它就不是一個用來做畫圖的軟體。人家的主要功能是矩陣操作、統籌優化、數學實驗、仿真模擬(此處省略一萬字)等等好嗎?用matlab畫圖簡直就是高射炮打蚊子——大材小用。
  • Matlab R2021a Mac中文破解版
    提供繪圖功能和數據。具有製造商徽標的書籤圖標和MATLAB與波動方程相同,並提取了L形膜和特殊特徵。MATLAB競爭對手,例如Mathematica,Maple和Mathcad。    數據可視化使用新的繪圖函數和自定義功能對您的數據進行可視化。
  • 使用MATLAB創建gif動畫詳解
    上課期間,和同學們提起matlab可製作gif動畫圖片,並讓大家搜一個畫心形圖的網頁,繪圖的最終結果如下。
  • MATLAB繪圖之旅
    歡迎大家關注「本碩博Matlab工作坊」或者微信搜索「MATLABAtelier」進行關注MATLAB繪圖之旅本文封面有一個花瓶,這個正是Matlab的強大繪圖功能,本文會在末尾附上MATLAB代碼供大家學習。