1012 MATLAB 教學 彭奕翔 2013/02/27.

Slides:



Advertisements
Similar presentations
实验安排 本周六和下周六上机时间: 上午: 8 : 30~10 : 00 第一组 上午: 11 : 00~11 : 30 第二组 下午: 14 : 30~16 : 00 第三组.
Advertisements

Matlab 教學 Speaker :陳珮妮 Date : 2013/03/14 1. Outline  MATLAB 簡介  算術邏輯運算  Matlab 陣列  Matlab 矩陣 2.
統 計 程 式 語 言.
黃聰明 臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 臺灣師範大學數學系.
MATLAB小结、 经典迭代法、CG.
Introduction to Matlab
Matlab教學 Speaker:林昱志 Date:2012/10/18.
1-1 MATLAB 小傳(1) 由MathWorks公司於1984年推出的 數學軟體。 名稱是由「矩陣實驗室﹙MATrix
性別透視鏡 鳳鳴電台 高宜君老師.
数值计算的工具—MATLAB 电子计算机技术为应用数学解决实际问题创造了物质条件 。
2010年桂林理工大学数学建模竞赛暑期培训班 MATLAB编程入门培训课程
聲音檔和 Video 檔的讀與寫 (by Matlab)
第七讲 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。
Matlab及其应用 鲍文 哈尔滨工业大学 先进动力控制与可靠性研究所
第1章 MATLAB概述 1.1 MATLAB 7.x简介 是Matrix Laboratory的缩写,它将计算、可视化和编程功能于一身,是一个开放的基于矩阵的交互式开发系统。主要用于数学计算、系统建模与仿真、数据分析与可视化等。(Mathworks始创于1984) MATLAB的系统结构.
第一章 概 述 1.1 MATLAB产品族简介 1.2 MATLAB的桌面环境 1.3 Command Windows和MATLAB指令
MATLAB介紹.
微積分 第三次上機 Matlab 教學 2007/12/04 朱育正.
張智星 清大資工系 補充內容:方煒 台大生機系 小幅修改:吳俊仲 長庚機械系
張智星 清大資工系 補充內容:方煒 台大生機系
MATLAB 程式設計進階篇 一般數學函數的處理與分析
MATLAB 程式設計進階篇 一般數學函數的處理與分析
范洪源 臺灣師範大學數學系 MATLAB 基本功能介紹 范洪源 臺灣師範大學數學系.
Matlab教學 Speaker:林昱志 Date:2012/10/25.
Matlab M檔案 方煒 台大生機系.
數學與電腦 的初相識 汪群超 個人網址: 變有不可者三,有不可不變者三: 能力未至不可變也、 學識未敷不得變也、 功侯未到不能變也。
Z Mathematical Model ‡ ' MATLAB简介.
Application of Matlab Language
University of Electronic Science and Technology, China
張智星 清大資工系 多媒體檢索實驗室 第九章: 矩陣的處理與運算 張智星 清大資工系 多媒體檢索實驗室.
程式流程控制 方煒 台大生機系.
Matlab基础介绍 Matlab 简介 Matlab 的安装与启动 Matlab 编程基础 Matlab 在数字信号处理课程中的应用.
黃聰明 國立臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 國立臺灣師範大學數學系
引 言.
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
Introduction to MATLAB
第九章: 矩陣的處理與運算 張智星 (Roger Jang)
数学建模与数学实验 MATLAB作图.
范洪源 臺灣師範大學數學系 分支宣告與程式設計 范洪源 臺灣師範大學數學系.
授課教授:張寶基 助教:梁凱雯 郭千豪 音視訊處理實驗室 2014 / 9 / 30
第1章 MATLAB操作基础 1.1 绪论 1.2 MATLAB概述 1.3 MATLAB的运行环境与安装 1.4 MATLAB集成环境 1.5 MATLAB帮助系统.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
MATLAB 程式設計入門篇 初探MATLAB
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
MATLAB介绍 Matlab基本命令介绍 Matlab矩阵运算 Matlab控制流 Matlab图像处理工具箱 实习题讲解.
数学建模 江西财经大学 数学与管理决策系 制作:华长生 华长生制作.
第九单元 第1课 实验 Matlab动画 1.洛仑兹非线性奇异方程所描述的无序运动 2.作y=sin(x)的程序动画(1)
MATLAB 入门教程.
MATLAB 程式設計入門篇 初探MATLAB
MATLAB 程式設計入門篇 三維立體繪圖 (part1)
三維繪圖 Helix t = 0:pi/50:10*pi; % linspace(0,10*pi,500); figure plot3(sin(t),cos(t),t) grid on axis square Remark: zlabel, view, surf.
实验教学 MATLAB在行列式和矩阵中的应用 授课教师:杨梦云.
MATLAB 程式設計入門篇 初探MATLAB
第二章 MATLAB编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理 2.4 习题 2019年4月23日
第二节 MATLAB 图形处理 内容: §1 二维图形显示 §2 图形可视编辑工具 §3 三维图形显示 §4 视角变换与三视图
第一单元 第1课 Matlab概述 1.MATLAB 2.工具箱 3.高效数值计算功能 4.完备的计算结果和编程可视化功能
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
数数据的基本操作 电子工业出版社.
ADD YOUR TITLE HERE ADD YOUR NAME.
Introduction to Matlab
第1章 MATLAB操作基础 1. 1 MATLAB概述 1. 2 MATLAB的运行环境与安装 1. 3 MATLAB集成环境 1
MATLAB 程式設計 程式除錯 方煒 台大生機系.
第7章 MATLAB工程计算.
MATLAB 实用教程.
群聚分析操作介紹 -以SOM和K-means為例
原版:清大資工系 張智星 新增版:方煒 台大生機系
第2章 MATLAB的基本语法 2.1 变量及其赋值 2.2 运算符与数学表达式 2.3 控制流 2.4 数据的输入输出及文件的读写
数学是知识的工具,亦是其它知识工具的泉源。 ——勒内·笛卡尔
MATLAB 程式設計入門篇 程式除錯 張智星 (Roger Jang)
Presentation transcript:

1012 MATLAB 教學 彭奕翔 2013/02/27

What is MATLAB? MATrix LABoratory的縮寫 1984年由MathWorks公司推出 主要特色 應用 強大的數值運算(numeric computation)能力 完整的矩陣運算指令 許多不同領域的工具箱(Toolbox)、函式庫 影像處理、訊號處理、金融分析、生物資訊 應用 algorithm development, data visualization, data analysis, and numeric computation

Development Environment 4個主要視窗 Workspace(變數區域)、Command History(命令歷史列)、Command History 、Current Folder

Operators 算術運算子 比較運算子 邏輯運算子 Element-by-Element運算“.” 沒有++、-- +、-、*、/(除以)、\(除)、^(次方) >> 100/5 ans = 20 比較運算子 >=、<=、>、<、==、~= 邏輯運算子 &、|、~ Element-by-Element運算“.” A = [1 1 1;1 2 3;1 3 6]; A = 1 1 1 1 2 3 1 3 6 A.^2 = 1 1 1 1 4 9 1 9 36 A^2 = 3 6 10 6 14 25 10 25 46

Operators 運算式最後加分號(;),就不會顯示運算結果 多個運算式之間,可用逗號(,)或分號(;)隔開 >> 100/5; %不會輸出運算結果 多個運算式之間,可用逗號(,)或分號(;)隔開 x=1,y=2,z=3 x=1;y=2;z=3 % 註解符號,類似C語言的// 快捷鍵:Ctrl+R(註解) 、Ctrl+T(解除註解)

Variables (1/3) 區分大小寫(case sensitive) 變數第一個字母必需是英文字母 不需要預先宣告變數 Ex: num_students = 30 不需要預先宣告變數 輸入變數名稱,會顯示變數值 預設變數 ans: Most recent answer pi: 3.1416 i or j: 虛數基本單位,也就是根號負1 Inf:無窮大(Infinity) NaN:不存在 realmin:可以使用的最小實數 realmax:可以使用的最大實數

Matrices and Arrays 矩陣index從1開始算 產生一個 1x3 的矩陣,可用空格或逗號隔開 x=[10 2 3] 或 y=[1,2,3] 產生一個 2x3 的矩陣,分號作為換列的分隔符號 m=[11 12 13; 21 22 23] 直接存取該位置的值 x(2)=2 m(2,3)=23 亦可由變數組成 z=[x y] % z=[10 2 3 1 2 3] 刪除元素 z(2)=[] % z=[10 3 1 2 3] 增加元素 z(6)=100 % z=[10 3 1 2 3 100]

Matrices and Arrays 矩陣列跟欄的操作 從哪裡到哪裡 x=[1 2 3; 4 5 6] x(2,1:2)=7 % x=[1 2 3; 7 7 6] x(1,end) % ans = 3 從哪裡到哪裡 a=1:3 % 從 1~3 每次間隔 1 b=1:.5:3 % 從 1~3 每次間隔 0.5 c=linspace(0,10,20) % 從 0~10 分成 20 等分 %linspace(Generate linearly spaced vectors) x(2:6)=1 % 將 x 向量的第二到六個設定 1

矩陣基本運算 x = [2 2 2]; y = [3 3 3]; z = [1 1 1]; x+y-z = [4 4 4] 矩陣相乘 A = [5 3 2 6]; A = 5 3 2 6 B = [-4 9 0 1]’ B = -4 9 0 1 A*B = 13 如果要element by element 的相乘,應該用”.*”,而不是”*”

矩陣常用函式 zeros: 配置零矩陣 ones: 配置每個element都是1的矩陣 eye: 配置單位矩陣 zeros(3) %產生一個3-by-3的零矩陣 ones: 配置每個element都是1的矩陣 eye: 配置單位矩陣 eye(3) rand, randi, randn: 配置值為亂數的矩陣 size:取得矩陣的大小 length: 取得陣列的長度 inv: 取得反矩陣 sort: 排序 magic(n): 產生n x n的魔方陣(每行、每列、和對角線的總和都一 樣)

數學常用函式 min、median、max mean: 平均 sum: 總和 abs: 取絕對值 ceil、floor、round(四捨五入) sin、cos、tan、asin、acos、atan exp: 自然指數 log(x):自然對數 ln(x), log2, log10 sqrt(開根號) rem(x,y): x 除以 y 的餘數 sign: 回傳-1(負數), 0(零) or 1(正數) imag(取虛數部份)、real(取實數部份)

一般常用函式 clear: 清除所有變數宣告 clc: 清除Command Window畫面 disp: 顯示文字或陣列 亦可僅清除單一變數 clear x; clc: 清除Command Window畫面 disp: 顯示文字或陣列

訊號系統常用函式 conv(a,b):Convolution fft2(x):Fast Fourier transform

Custom M-file 副檔名: *.m File->New->M-File or File->New->Script 檔名必須與函數名稱相同 M-file函式裡面定義的任何變數皆是 local variable 一般習慣將指令先寫個M-File,然後執行該 M-File(等同於在 Command Window下指令),以便多次執行相同指令 Function 格式 function [ output_args ] = FuncName( input_args ) % UNTITLED Summary of this function goes here % Detailed explanation goes here code return

M-file Example function [z] = add(x,y) z=x+y; return 在Command Window可以直接呼叫add() add(4,80) Current Folder 要設定在M-file所在位置,不然會找不到該函式, 發生”??? Undefined function or method”的錯誤

if/elseif/else 與 C 語言相同,看情況使用 elseif 跟 else if expression1 commands elseif expression2 commands elseif … … … else commands end

For Loop for i=1:10 % i 從 1~10 間隔 1 x(i)=sin(i) end for i=1:2:10 % i 從 1~10 間隔 2 x(i)=cos(i) end for i=10:-1:1 % i 從 10~1 每次少 1 x(i)=tan(i) end for迴圈方法較慢,可直接向量操作 i=1:10; x=sin(i)

while loop while i=0; while i<10 i = i+1 end 迴圈可使用 break,continue

Graphics (1/4) plot:畫2D線圖 樣式設定 顏色 y(yellow)、m(magenta)、c(cyan)、r(red)、green(g)、b(blue)、 white(w)、black(b) 線條樣式 .(point)、o(circle)、x(x-mark)、+(plus)、*(star)、-(solid line)、 :(dotted line)、--(dashed) x=linspace(1,2*pi,30); y=sin(x); plot(x,y); z=cos(x); plot(x,y,x,z); plot(x,y,'o',x,z,'g*');

Graphics (2/4) stem(x,y): 繪製離散圖形 grid: 格線 xlabel('x name'): x 軸名稱 ylabel('y name'): y 軸名稱 title('stem(x,sin(x))'): 圖片抬頭 text(0,0, 'text'): 特定位置加上文字 axis([xmin xmax ymin ymax]): x、y 軸的範圍 x=linspace(1,2*pi,30); y=sin(x); stem(x,sin(x)); grid on; xlabel('x name'); ylabel('y name'); title('Test Title');

Graphics (3/4) subplot(共幾列,共幾欄,第幾個位置)%選擇輸出的位置 分好幾個小圖顯示 Example x=linspace(0,2*pi,30); y=sin(x); z=cos(x); a=2*sin(x).*cos(x); b=tan(x); subplot(2,2,1); plot(x,y); subplot(2,2,2); plot(x,z); subplot(2,2,3); plot(x,a); subplot(2,2,4); plot(x,b);

Graphics (4/4) hold on / hold off 在已有的圖案上,加上新的圖案 % plot(x,z) 的結果會覆蓋 plot(x,y) 的結果 % 在 plot(x,z) 之前加上 hold on,保留之前畫得結果 x=linspace(1,2*pi,30); y=sin(x); plot(x,y); z=cos(x); plot(x,z); x=linspace(1,2*pi,30); y=sin(x); plot(x,y); z=cos(x); hold on plot(x,z); hold off

Input/Output fprintf input: select=input('selection(number):'); print to the screen x= 100; fprintf('hello world! %d\n',x); 寫檔 x = 0:.1:1; y = [x; exp(x)]; % open the file with write permission fid = fopen('c:\exp.txt', 'w'); fprintf(fid, '%6.2f %12.8f\n', y); fclose(fid); % view the contents of the file type exp.txt input: select=input('selection(number):');

音效 (1/3) 讀取音效 播放音效 錄製音效 輸出檔案 [y,fs]=wavread('file.wav'); sound(y,fs); wavplay(y*m,fs*n); y 增加倍數(m)可增大音量,fs增加倍數(n)會影響音訊速度 錄製音效 y=wavrecord(n, fs); %讀入 n 點資料 輸出檔案 wavwrite(y, fs, nbits, waveFile)

音效 (2/3) wavread 範例 wavrecord 範例 [y, fs]=wavread('run.wav'); sound(y, fs); % 播放此音訊 time=(1:length(y))/fs; % 時間軸的向量 plot(time, y); % 畫出時間軸上的波形 fs=12000; %取樣頻率 12000 Hz fprintf('按任意鍵後開始 2秒錄音:'); pause fprintf('錄音中...'); y=wavrecord(2*fs, fs); %duration*fs 是錄音資料點數 fprintf('錄音結束\n'); fprintf('按任意鍵後開始播放:'); pause wavplay(y,fs);

音效 (3/3) 音效Convolution範例 file='sentence.wav'; [y,fs,nbits]=wavread(file); file2='Hallway_IR.wav'; [y2,fs2,nbits2]=wavread(file2); test=conv(y,y2); %迴旋積運算 wavwrite(test,fs2,'test.wav'); time=(1:length(test))/fs; %時間軸 plot(time,test);

影像處理範例 imread(‘filename.jpg'): 讀取影像檔案 Example: filename = 'dog.jpg'; rgb_image = imread(filename); figure,imshow(rgb_image); %彩色轉成灰階 gray_image = rgb2gray(rgb_image); figure,imshow(gray_image); imwrite(gray_image, 'gray_dog.jpg'); %write new image %影像模糊化 h = fspecial('gaussian',10,10); blur_rgb_image =imfilter(rgb_image,h); figure,imshow(blur_rgb_image);

影像處理範例 灰階影像的邊界 edge_img = edge(gray_image,'canny'); imshow(edge_img);