Matlab編程實踐(二)
忙完大學本科階段最後一門專業課後,終於可以專心的看書了。不經意間,已經到了2016年的末尾。這幾天一方面看Moler的書,另外也在做著今年的總結,翻開Kindle統計了一下,今年在Kindle上讀的書有40來本,完整讀完的12本,其餘的大多隻看了部分,果真跟大佬們還有很大的差距呀。閑話不多談,下面開始matlab之旅吧。
這周讀了編程實踐的6-8章,本文第一部分介紹下矩陣(matrices)知識,第二部分詳細介紹下仿射矩陣在圖形變換中的應用--蕨形葉子的生成,主要涉及有matlab中顏色RGB代碼,GUI按鈕(toggle)創建命令,偽隨機數生成以及其他GUI命令。
一、矩陣
這部分內容相對簡單,有線性代數基礎的同學都能夠看懂,下面是用matlab這一工具來闡述。
1.如何生成一個nxn的單位矩陣?單位矩陣定義是對角線元素為1,其餘元素為0,嚴格意義上講,單位矩陣都是方陣。matlab中eye(n)可以生成nxn的單位矩陣,除此之外,eye(m,n)可以生成mxn的「單位矩陣」如
2.取整函數,matlab中有四種取整函數。Round,fix,floor,ceil。區別如下:
Fix:朝0方向取整
Floor:朝負方向取整(floor地板意,向下看)
Ceil:朝正方向取整(ceil天花板意,向上看,就是向正方向取整)
上面三個函數非常容易理解和記憶,round:取離x
最近的整數。用法稍微多變些。
round(x,N),若N>0,取到x小數點後N位
eg:
round(x,N),若N<0,小數點N位以後抹0
eg:
3.魔方矩陣。magic(N),產生1~間的整數,且各行之和等於各列之和。
eg:
二、蕨形樹葉
蕨形樹葉是由平面上一點不斷經過仿射變換得到的,關於仿射變換,更多:,其通式為:"",
蕨形樹葉函數程序:
function fernshgclf resetset(gcf,color,white,menubar,none, ... numbertitle,off,name,Fractal Fern)x = [.5; .5];h = plot(x(1),x(2),.);darkgreen = [0 2/3 0];plot(x(1),x(2),.,markersize,4,color,darkgreen)axis([-3 3 0 10])axis offstop = uicontrol(style,toggle,string,stop, ... background,white);drawnowhold on p = [ .85 .92 .99 1.00];A1 = [ .85 .04; -.04 .85]; b1 = [0; 1.6];A2 = [ .20 -.26; .23 .22]; b2 = [0; 1.6];A3 = [-.15 .28; .26 .24]; b3 = [0; .44];A4 = [ 0 0 ; 0 0.16]; cnt = 1;ticwhile ~get(stop,value) r = rand; if r < p(1) x = A1*x + b1; elseif r < p(2) x = A2*x + b2; elseif r < p(3) x = A3*x + b3; else x = A4*x; end plot(x(1),x(2),.,markersize,4,color,darkgreen) drawnow cnt = cnt + 1;endt = toc;s = sprintf(%8.0f points in %6.3f seconds,cnt,t);text(-1.5,-0.5,s,fontweight,bold);set(stop,style,pushbutton,string,close,callback,close(gcf))hold off
stop = uicontrol(style,toggle,string,stop, ... background,white);
上面這條語句繪製一個stop按鈕,uicontrol:用戶界面控制,執行一個對用戶交互作用的函數,定義類型為「toggle」按鈕型,顯示字元為stop,背景顏色為白色。drawnow開始繪製,下面為P,A,b1矩陣,tic,toc是秒錶工具,記錄tic-toc程序段執行的時間。cnt為count表示計數器。
while ~get(stop,value)
s = sprintf(%8.0f points in %6.3f seconds,cnt,t);text(-1.5,-0.5,s,fontweight,bold);
將計數器,秒錶的數據列印在屏幕三。text語句的意思是在(-0.5,-0.5)處顯示字元串s,粗體上面的語句將stop按鈕變成close按鈕,並修改回調函數,關閉圖形窗口,結束運行。
set(stop,style,pushbutton,string,close,callback,close(gcf))
推薦閱讀:
※大家用matlab有遇到過哪些槽點?
※【IoT:從零開始的MATLAB學習】 2 偏好設置&幫助文檔
※怎麼用matlab 2017b的APP Designer?
※Matlab|Matlab二維繪圖
※matlab如何讀入混合變數格式的dat文件?
TAG:MATLAB |