SCILAB第二章 二維平面繪圖 撰文者: 1.中央大氣科學系 楊善文 2. (如對本文有貢獻者,記得在此留名)

Slides:



Advertisements
Similar presentations
编程加工 信息的. 趣味导入拓展提升大显身手总结反思学以致用 传说古代印度有个国王叫舍罕,他很迷恋棋类,而 宰相达依尔是个聪明的大臣,发明了国际象棋。国王玩 得爱不释手,决定奖赏宰相。达依尔说:陛下,我别无 他求,请你在这张棋盘的第一个格子里赏我 1 粒麦子; 在第二个格子里赏我 2 粒麦子;在第三个格子里赏我.
Advertisements

SCILAB 科學軟體教學 撰寫者: 1.中央大學大氣科學系 楊善文 2. (為本文有貢獻者,記得在此留名。)
湘雅医院中层干部培训讲座之二 医院行政管理工作思路 孙 虹 2010年10月27日.
无锡商业职业技术学院 机电工程学院党总支孙蓓雄
这是一个数字的 乐园 这里埋藏着丰富的 宝藏 请跟我一起走进数学的 殿堂.
2016年全国中级会计资格考试 经济法 主讲老师:葛江静.
第二章 复式记账原理*** 主要内容、重点难点: 1.会计要素与会计等式*** 2.会计科目与账户*** 3. 借贷记账法***
全面了解入党程序 认真履行入党手续 第一讲 主讲人:陈亭而.
中共湖北大学知行学院委员会党校 入党材料规范填写指导 学工处 李华琼 二〇一三年十二月.
云南财经大学2010年党员发展培训—— 党员发展工作培训 校党委组织部 2010年9月17日.
教育年鉴条目的撰写.
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
1、分别用双手在本上写下自己的名字 2、双手交叉
南美洲 吉林省延吉一高中 韩贵新.
1.6 中国人口迁移.
愛之花.
第三课 走向自立人生.
努力做好新常态下 反映社情民意信息工作 省政协研究室 欧阳东 2016年5月31日.
2007年11月考试相关工作安排 各考试点、培训中心和广大应考人员:
如何开好通表会 荔湾区教育局第二期学生团干培训 2009年9月 1.
第六章 應收款項.
欢迎大家来到生命科学课堂.
分式的乘除(1) 周良中学 贾文荣.
您買美元了嗎? 退休規劃 全球外幣保單.
第四章 制造业企业 主要经济业务核算.
《思想品德》七年级下册 教材、教法与评价的交流 金 利 2006年1月10日.
第八章 诉讼法 第一节 诉讼法概述 第二节 民事诉讼法 第三节 行政诉讼法 第四节 刑事诉讼法.
仓颉造字 相传仓颉在黄帝手下当官。那时,当官的可并不显威风,和平常人一样,只是分工不同。黄帝分派他专门管理圈里牲口的数目、屯里食物的多少。仓颉这人挺聪明,做事又尽力尽心,很快熟悉了所管的牲口和食物,心里都有了谱,难得出差错。可慢慢的,牲口、食物的储藏在逐渐增加、变化,光凭脑袋记不住了。当时又没有文字,更没有纸和笔。怎么办呢?仓颉犯难了。
初中《思想品德》课程改革 回顾·现状·展望
香港明愛 綜合家居照顧服務 PWD個案分享.
致亲爱的同学们 天空的幸福是穿一身蓝 森林的幸福是披一身绿 阳光的幸福是如钻石般耀眼 老师的幸福是因为认识了你们 愿你们努力进取,永不言败.
1.1.2 四 种 命 题.
增值评价 2014级 初中起点报告 解读培训 辽宁省基础教育质量监测与评价中心.
教師敘薪實務解說 大墩國小人事室 吳莉真
 第20讲 中国的交通.
第十二单元 第28讲 第28讲 古代中国的科技和文艺   知识诠释  思维发散.
性別透視鏡 鳳鳴電台 高宜君老師.
数值计算的工具—MATLAB 电子计算机技术为应用数学解决实际问题创造了物质条件 。
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
第八章二元一次方程组 8.3实际问题与二元一次方程组.
第八章二元一次方程组 8.3实际问题与二元一次方程组 (第3课时).
通 知 通知是批转下级机关的公文,转发上级机关和不相隶属机关的公文,传达要求下级机关办理和需要有关单位周知或执行的事项,任免人员时使用的公文。
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
MATLAB介紹.
Matlab基础介绍 Matlab 简介 Matlab 的安装与启动 Matlab 编程基础 Matlab 在数字信号处理课程中的应用.
寫作評估 實用文寫作講解 1.
Introduction to MATLAB
§ 9.1常用数学软件简介及MATLAB基础知识
1.3 矩阵与数组 MATLAB中矩阵的生成 MATLAB矩阵操作 数组创建与运算.
共有六個運算性質 包括它的證明以及相關題型
MATLAB 入门教程.
二元一次聯立方程式 代入消去法 加減消去法 自我評量.
判別下列何者是 x 的多項式。以「○」表示是x的多項式,「×」表示不是 x的多項式 :
MATLAB 程式設計入門篇 二維平面繪圖 改自張智星講義
Ch1 三角 1-2 廣義角與極坐標.
课前注意 课前注意 大家好!欢迎加入0118班! 请注意以下几点: 1.服务:卡顿、听不清声音、看不见ppt—管家( ) 2.课堂秩序:公共课堂,勿谈与课堂无关或消极的话题。 3.答疑:上课听讲,课后答疑,微信留言。 4.联系方式:提示老师手机/微信: QQ:
× (1)( )若一元二次方程式可分解為 (x+1)(x+2)=1, 則 x+1=1,x+2=1, 所以 x=0 或-1
4-1 變數與函數 1.前言: 在日常生活中,兩種量之間常有一些特別的關係,這些關係,有時可以用數學符號及式子十分清楚地加以描述,有時只能用文字做大略的描述.
西南科技大学网络教育系列课程 数学软件 数学软件 第3讲 MATLAB数组与运算 主讲教师: 鲜大权 副教授 西南科技大学理学院数学系.
(5) (-5x)(-7x+2) =__________ (6) 7x(5x2+6x-3) = _______________ -27x2
此文轉載處:戴晨志博士「力量來至渴望一書 」 好文章與好朋友分享 啟仁彙編
基本不等式.
1.5 Matlab绘图 plot(y) plot(x,y)
小梅到麵包店為全家買麵包和果汁當早餐,已知麵包一個25元,果汁一瓶18元;
智慧財產權管理講次36 積體電路電路布局保護法(1) 主講:吳銘圳
第八章 服務部門成本分攤.
实验二 定积分的近似计算.
在下列空格中,填入適當的式子: (1)(-3x)‧9x=__________ -27x2 (2)(3x2)2 =__________
8的乘法口诀 导入 新授 练习.
Presentation transcript:

SCILAB第二章 二維平面繪圖 撰文者: 1.中央大氣科學系 楊善文 2. (如對本文有貢獻者,記得在此留名)

繪圖前的準備工作 1.調配Scilab存取的記憶體與Swap空間。(因為繪圖這個 動作是很吃資源的。) 2.學習簡單的存取外部的資料檔。 3.rand()的使用。(rand是取隨機亂數,常被拿來作教學 範例使用。) 4.linspace()的使用。(要繪出一個圖,常需要宣告一個範 圍的變數值,這是常用的指令。) 5.size()指令的使用。(部分繪圖指令需要先宣告邊界大 小,故需先使用此指令) (筆者會先講以上的部分,之後才會進入正題。)

調配SCILAB需求的空間 SCILAB程式在啟動時,會預先對硬碟磁區的Swap區抓 取一定量的空間。如果使用者要載入非常龐大的資料量 來繪圖的話,很可能會造成超過啟動時所得到的空間, 因而產生錯誤訊息:記憶體空間不足而不能繪圖。 修改預設存取空間方法:在Scilab的安裝目錄(例如筆者 的是/usr/lib/scilab-4.0/)下,有個檔案:scilab.star 編輯此檔案,在此區域: // Set stack size ================================ 中的newstacksize='你想要的大小'

調配空間注意事項 當完成編輯後,存檔離開,重新啟動Scilab即可。 注意:執行這個動作要非常小心!不要一口氣貪心想調 得非常的大。因為這個空間是一啟動Scilab時就會取下 這樣的大小,不論你的Scilab是否已經在工作。所以取 太大可能會超過系統的Swap空間大小! 各個作業系統對超過記憶體資源負荷的反應不一定相同 ,例如筆者的Solaris系統遇到這種情況是在Scilab還沒 啟動完畢,系統就直接kill掉這支程式。至於其他系統是 否會有意料之外的情形,例如程式掛掉甚至系統整個當 機,這筆者不敢保証會發生什麼事。 所以建議調到適當大小即可。

存取外部的資料檔 在scilab下存取一個普通的資料檔指令是read/write。 存取Binary形式的資料檔指令是load/save。 (注意:這部分跟Matlab不一樣了。) read()的用法是:read('資料檔名(絕對或相對路徑 )',A,B); A與B是要抓取多大範圍的資料來載入矩陣,如果選擇的 範圍超過資料檔大小,則Scilab預設會抓取資料檔的下 一批資料來補齊,如果選擇的範圍超過資料檔內容的數 量(例如資料檔xxx是3x4的資料,使用者下了: read('xxx',7,8);卻取7x8的範圍),則會顯示錯誤訊息。

資料檔的尋找 如果資料檔不在預設的目錄下,可以使用Scilab內預設的指令 (此指令與UNIX下的系統指令類似。) pwd指令:察看目前所在目錄。 cd指令:切換目錄,可以是絕對與相對路徑。例如: --> cd .. <===切換到上一層目錄 --> cd /usr/local/bin <==切換到/usr/local/的bin/目錄下(絕 對路徑)。 ls指令:察看該目錄下有哪些檔案。 mkdir/rmdir [目錄名]:製造/刪除 目錄。 以上指令,如果你是一個UNIX/Linux使用者,或許會覺得很 熟悉。但是如果你是Windows或是其他非UNIX類OS的使用 者,筆者就建議你要多多練習這部分的操作了。

read/write 1 假設有一個資料檔檔名:data,檔案內包含了以下資料: 14 27 36 12 22 13.36 14.13 7 14 27 36 12 22 13.36 14.13 7 15 13.12 6.893 27 17.1 15.2 7.85 24 讀取它並存進一個矩陣的語法如下: --> A=read('data',4,4); --> A Ans = 當將資料讀入矩陣後,就可以開始使用這些資料了。

read/write 2 想將Scilab上已經處理完的矩陣資料,可以使用write()指 令輸出存檔。 --> write('data2',B); <==把b的資料存成data2 這時你就可以在目前的目錄下找到data2這個檔案,利用 vi等編輯器開啟它,就會發現資料已經在裡面了。 讀檔的小秘訣:如果資料量非常龐大,你不確定要載入 多大的矩陣才能完全載入,可以使用vi編輯器,開檔時 會有顯示行數,或者在終端機上使用'wc -l 資料檔名'也 是個辦法。

save/load 這是存取Binary形式的資料,在做資料處理時會比較少用到 。 儲存的例子:save('data3',B); <==使用之前的B矩陣 這時如果你用vi等編輯器開啟data3檔案,就會發現裡面是亂 碼。 讀取它:load('data3'); --> B <==因為之前是存B,故load時你只能用B來讀出它 Ans = 1. 2. 3. 4. 5. 6. 7. 8. 9. (save指令在儲存時,除了儲存資料外,也會將資料所屬的矩 陣名一併記下來。)

亂數產生指令rand() 使用rand()指令可以產生一個-1到1之間的亂數矩陣。 語法rand(A,B); <==產生一個AxB的亂數矩陣 例子:--> Z=rand(2,2) Z = - 0.2207715 0.4621729 - 0.2972244 - 0.8631775

取變數的區域範圍:linspace() 用法:變數=linspace(下界,上界,等份點數); 在繪圖時,自變數X常是以此方式宣告,而應變數Y就會 隨著X的變化而變動。 例子:t=linspace(0,2*%pi,300); <==0到2π取300個等 份點。 例子2:x=linspace(1,10); <=在1到10之間取100點

size指令的使用 size()指令可以用來判斷矩陣的大小。 例子: --> A=[1 2 3 4;5 6 7 8;9 10 11 12] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. --> size(A) Ans = 3. 4. (學會了這些之後,就可以進入正題了。)

基本二維繪圖plot plot指令可以用來繪製一般的曲線圖。 範例(對sin函數繪圖): --> t=linspace(0,2*%pi); <==取0到2π的範圍 --> y=sin(t); --> plot(y);

範例2(任意函數): --> x=linspace(0,40,300); <==0到40之間取300個點 --> y=3*x^2-4*cos(x)-exp(x); --> plot(y); (plot(y)也可以寫成plot(x,y),如果你希望將x,y軸對調,可以 寫成plot(y,x)。) 注意:plot(y)跟plot(x,y)仍然還是有差別。當寫成plot(y)時,x 座標軸是以y有多少筆資料來決定,例如之前的x雖然是0到40 ,但是切了300等分。故plot(y)時,x軸是0到300。但是 plot(x,y)時,x軸就是以0到40來顯示了。

將X,Y軸對調後(plot(y,x))

多重曲線繪圖的方式 例子: --> x=-2:0.01:2; <==這是linspace外的另一種定義變數方 式 ,從-2到2,間距0.01。 --> y1=sin(x); --> y2=exp(x); --> y3=sin(x)+cos(x); --> X=[x;x;x]; --> Y=[y1,y2,y3]; --> plot(X',Y'); <==也可以用plot2d()指令,用法差不多。

另一種在同張圖上繪製多條曲線方式 由於Scilab在繪圖時,若同時多次下達繪圖指令,且不 指定要新增繪圖視窗時,預設會讓圖形疊在同一張圖中 。而不會每下一次繪圖指令,圖就刷新一次。除非繪完 一張圖,就關一次繪圖視窗。 例如:plot(y1);plot(y2);plot(y3); 這時就可以在同張圖中,同時看到y1,y2,y3曲線了。 (這種方式的優點是,你可以比較容易為每條曲線做不同 的處理,而不會互相影響到(簡單明暸)。筆者在繪製多 重曲線圖時,反而比較常使用這種方式。)

修改圖形的線標(Marker) 在plot()指令中宣告曲線y之後的欄位,可以加上'線標樣 式'的參數,例如:'.' , '+' , 'x' , 'o'.......... 如果要調整線標大小,可以加上:'marksize',大小數值 例如: --> plot(x,y,'.','marksize',1); <==打點圖,點大小1 如果要條整線標的顏色,可以加上參數:'color',[R G B] R,G,B的範圍是0到1,例如紅色:[1 0 0],綠色:[0 1 0] ,藍色:[0 0 1]。我們可以從[ ]之中三個值用0到1之間 的數字來混出其他色彩,例如:[0.7 0.5 0.2]

例子: --> t=linspace(0,2*%pi,50); --> y=sin(t); --> plot(t,y,'.','marksize',4,'color',[1 0 0]); --> plot(t,y+1,'+','marksize',4,'color',[0.7 0.3 0]); --> plot(t,y+2,'x','marksize',4,'color',[0 0 1]); --> plot(t,y+3,'o','marksize',4,'color',[0.8 0.4 0.6]);

為圖片加上標示文字 在scilab下,在圖的座標軸旁與圖上方可以加上裝飾或 是注解的文字,是使用xtitle()指令。 用法:xtitle('標題','x軸注解','y軸注解'); 例如: --> t=linspace(0,2*%pi,50); --> y=sin(t); --> plot(t,y); --> xtitle('sin function','t','sin(t)');

為圖片加上網格線 讓圖表加上網格線,更可以輕易看出資料點的位置。加 入網格線的指令是:xgrid 通常xgrid()不需加入參數即可使用。 例子:將之前的sin函數圖加上網格線。 原來的語法之下再加入xgrid();即可。

離散資料打點圖 例如:有兩個資料檔A,B裡面的資料分別是: 資料A:3.3 4.2 11 13 5.6 8 --> x=read('A',1,6); --> y=read('B',1,6); <==分別將A,B資料存入矩陣 --> plot(x,y,'.'); 必須注意的是,在plot()中必須要加入'.'這個參數,如果 不加的話,Scilab會將這些點連起來。

向量場圖champ champ顧名思義,在法文中即是場之意。champ()指令 即是用來畫向量場(champ de vecteurs)。向量場常用於 大氣風場、流體流場等用途。 用法:champ(t1,t2,X,Y); t1:y方向(垂直方向)範圍 t2:x方向(水平方向)範圍 X:全域x方向的大小矩陣 Y:全域y方向的大小矩陣

向量場示意圖

champ使用範例 t1=1:4; t2=1:3; X=[1 1 1;1 1 1;1 1 1;1 1 1]; Y=[0 1 1;1 2 1;1 1 1;1 1 1]; champ(t1,t2,X,Y);