感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!若您對公眾號有什麼意見或建議,請在公眾號中回復或在任意文章底部留言!
之前給大家介紹過一期有關如何用origin繪製光譜圖(科研作圖之光譜圖繪製),有小夥伴在公眾號中回復希望能通過matlab作出這樣的光譜圖,本期就來介紹如何通過matlab實現光譜圖繪製。matlab繪製原理和origin繪製原理是一樣的,先繪製全範圍波長RGB圖,再在該圖上疊加實驗數據曲線。不過matlab繪製並沒有origin那麼容易,因為matlab中沒有直接將光波波長轉換成RGB值的函數,本期內容使用到了Jeff Mather開發的波長轉RGB值的程序。下面就一起來看看程序吧!% 感謝關注matlab愛好者微信公眾號clc;clear;close all;% 加載數據,本數據來源於網絡data = importdata('data.dat');% 取最大最小值minX = floor(min(data(:,1)));maxX = ceil(max(data(:,1)));maxY = ceil(max(data(:,2)))+100;% N等分波長N = 1000;x = linspace(minX,maxX,N);% 設置強度的上下限yd = zeros(1,N);yu = maxY*ones(1,N);color = zeros(N,3);figure('Color','w');hold on;% 先繪製全波長範圍的RGB圖for m = 1:N % 將波長轉換RGB值 color(m,:) = spectrumRGB(x(m))'; % 在對應波長處繪製相應RGB值的直線 plot([x(m);x(m)],[yd(m);yu(m)],'Color',color(m,:),'LineWidth',3.0);end% 添加實驗數據plot(data(:,1),data(:,2),'k','LineWidth',3.0);% 圖形相關設置xlim([minX maxX]);ylim([0 maxY]);xlabel('Wavelength (nm)');ylabel('Intensity');hold off;% 保存繪製的圖像filename = [pwd,'\','spectra'];print(filename,gcf,'-r300','-djpeg');效果圖:
當然繪製思路和方法並不是只有本文中的這一種,方法千萬種,種種出高圖!有興趣的小夥伴留言寫下自己的繪製思路溫馨提示:在公眾號中回復「光譜」或「光譜圖」即可獲取本期內容相關數據和完整程序,切勿直接複製粘貼就運行程序哦!小夥伴們也可以通過參考資料的連結去下載Jeff Mather編寫的相關程序。https://ww2.mathworks.cn/matlabcentral/fileexchange/7021-spectral-and-xyz-color-functions長期堅持創作不易,如果您喜歡這篇推文,煩請有空點個讚,以資鼓勵!喜歡就關注一下哦,謝謝!
感謝您的認可欣賞