MATLAB繪製二維條形圖、將散點繪製爲平滑曲線的兩種方法

對實驗結果數據進行處理,因爲實驗結果有一點嗯看上去很簡單,用圖像處理顯得比較高大上一點。圖像要求矢量圖,所以使用MATLAB畫圖。
其實我內心已經要瘋了……被畢設折磨好多天了,自從模型出錯之後我整個神經都是繃着的,實驗花費的時間又比預計要久,第一天爆肝又讓自己生物鐘亂掉了,所以,整個人瘋了……
我覺得人要放過自己,尤其是對一些不必要的事情上。我搞完這個之後在思考需不需要再做一組實驗,覺得論文這樣也行,但是有的話更好,內心覺得師兄會讓我繼續搞的。所以,不知道了。看明天情況吧。
要瘋了……

正兒八經講問題

參考鏈接:https://blog.csdn.net/hao_ding/article/details/9470373#

MATLAB中繪製條形圖的方法比較簡單,給定樣本值,直接調用bar()函數即可完成基本的條形圖的繪製,bar3()可以繪製三維條形圖。
bar()函數可以直接使用bar(y)繪製,這時的x從1開始遞增;或者與plot(x,y)函數方法相同,先定義x, 如x=0:pi/10:pi,再使用bar(x,y)。其他關於bar()函數的屬性不常用。
使用title()添加標題
使用xlabel(),ylabel()添加座標名稱
使用legend指定各樣條代表的樣本名稱
使用set(gca, ‘xticklabel’, {…})來重新刻畫x軸的刻度值,變成自己期望的性質,默認爲從1開始的整數,這種方法在x是互不相關的屬性,或者非數字時使用,當x爲某一函數採樣點時,也可以使用上面提到的bar(x,y)。gca表示當前座標軸的句柄,xticklabel表示x軸的刻度名稱,第三個參數表示新的刻度名稱,長度未對齊不會報錯。

樣例

挺好

%figure1  simulated peak temperature
y1=[323.1901 322.9307 329.6955 323.2279;...
    326.8491 326.4843 333.8358 326.8860;...
    337.0783 335.8457 344.8441 337.2587];  

figure(1);
b=bar(y1);  
grid on;  
set(gca, 'xticklabel', {'H.263','MP3','MADplayer'}); 
ylim([310 375]);
ylabel('Peak temperature /K'); 

%legend pos 
gc=legend('ANSA','BS','SDP','FBGD');
po=get( gc, 'Position' ); 
set(gc, 'Position', [po(1)-0.15, po(2), po(3), po(4)] ); 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%figure2  simulated time
y2=log([8.1274^4*exp(4) 1.2282^4*exp(4) 2.2878^4*exp(4) 1.6398^3*exp(3);...
    6.2499^4*exp(4) 8.1457^3*exp(3) 1.4291^4*exp(4) 1.2583^4*exp(4);...
    1.1719^4*exp(4) 542.4887 153.299 134.9622]);  
figure(2);
b=bar(y2);  
grid on;  
set(gca, 'xticklabel', {'H.263','MP3','MADplayer'}); 
set(gca, 'yTick', mu);
set(gca, 'yticklabel', {'10^0','10^2','10^4','10^6','10^8'}); 
ylabel('Execution time /s'); 

%legend pos 
gc=legend('ANSA','BS','SDP','FBGD');
po=get( gc, 'Position' ); 
set(gc, 'Position', [po(1)-0.15, po(2), po(3), po(4)] ); 

將散點繪製爲平滑曲線的兩種方法

參考鏈接: https://blog.csdn.net/steelbasalt/article/details/48756143
自然狀態下,用plot畫的是折線,而不是平滑曲線。

有兩種方法可以畫平滑曲線,第一種是擬合的方法,第二種是用spcrv,其實原理應該都一樣就是插值。下面是源程序,大家可以根據需要自行選擇,更改擬合的參數。

clc,clear;
a = 1:1:6;  %橫座標
b = [8.0 9.0 10.0 15.0 35.0 40.0]; %縱座標
plot(a, b, 'b');   %自然狀態的畫圖效果
hold on;
%第一種,畫平滑曲線的方法
c = polyfit(a, b, 2);  %進行擬合,c爲2次擬合後的係數
d = polyval(c, a, 1);  %擬合後,每一個橫座標對應的值即爲d
plot(a, d, 'r');       %擬合後的曲線

plot(a, b, '*');       %將每個點 用*畫出來
hold on;
%第二種,畫平滑曲線的方法
values = spcrv([[a(1) a a(end)];[b(1) b b(end)]],3);
plot(values(1,:),values(2,:), 'g');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章