【STM32F429的DSP教程】第5章 Matlab簡易使用之常用編程語句

完整版教程下載地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547

第5章   Matlab簡易使用之常用編程語句

本期教程主要是講解Matlab的一些編程語句。

5.1 初學者重要提示

5.2 Matlab控制流

5.3 Matlab中help功能的使用

5.4 總結

5.1   初學者重要提示

  1.   學習本章節前,務必優先學習第4章。
  2.   Matlab的編程語句類似C,只是比C更加寬鬆。

5.2   Matlab控制流

5.2.1  Matlab條件控制if,else,switch

下面我們通過三個簡單的例子來說明這三個函數的使用。

  • If和else語句的使用
a = randi(100, 1);    if a < 30      disp('small')  elseif a < 80      disp('medium')  else      disp('large')  end

命令窗口輸出結果如下:

  • switch語句的使用
[dayNum, dayString] = weekday(date, 'long', 'en_US');    switch dayString     case 'Monday'        disp('Start of the work week')     case 'Tuesday'        disp('Day 2')     case 'Wednesday'        disp('Day 3')     case 'Thursday'        disp('Day 4')     case 'Friday'        disp('Last day of the work week')     otherwise        disp('Weekend!')  end

命令窗口輸出結果如下:

在這裡順便介紹一個類似於C語言中scanf的函數input並配合上面的if else實現一個小功能:

yourNumber = input('Enter a number: ');    if yourNumber < 0      disp('Negative')  elseif yourNumber > 0      disp('Positive')  else      disp('Zero')  end

運行上面代碼後,我們在命令窗口輸入數字22,輸出結果如下:

5.2.2  Matlab循環控制for, while, continue, break

這裡我們也通過幾個簡單的例子來說明這幾個函數的使用。

  • for語句的使用
for n = 3:32     r(n) = rank(magic(n));  end    r

命令窗口輸出結果如下:

  • while語句的使用
a = 0; fa = -Inf;  b = 3; fb = Inf;  while b-a > eps*b     x = (a+b)/2;     fx = x^3-2*x-5;     if sign(fx) == sign(fa)        a = x; fa = fx;     else        b = x; fb = fx;     end  end  x

命令窗口輸出結果如下:

  • continue語句的使用
fid = fopen('magic.m','r');  count = 0;  while ~feof(fid)      line = fgetl(fid);      if isempty(line) || strncmp(line,'%',1) || ~ischar(line)          continue      end      count = count + 1;  end  fprintf('%d linesn',count);  fclose(fid);

命令窗口的輸出結果如下:

  • break語句的使用
a = 0; fa = -Inf;  b = 3; fb = Inf;  while b-a > eps*b     x = (a+b)/2;     fx = x^3-2*x-5;     if fx == 0        break     elseif sign(fx) == sign(fa)        a = x; fa = fx;     else        b = x; fb = fx;     end  end  x

命令窗口輸出結果如下:

5.2.3  Matlab矢量化

對於matlab而言,要想加快算法的執行速度可以通過算法的矢量化來實現,比如要實現如下的功能。

x = .01;  for k = 1:1001     y(k) = log10(x);     x = x + .01;  end

但是我們矢量化後,將更加方便和容易實現。

x = .01:.01:10;  y = log10(x);

但是有一點大家要特別注意,不是什麼程序矢量化都能加快執行速度,要視具體情況而定。

5.3   Matlab中help功能的使用

關於matlab入門方面的東西就跟大家將這麼多,基本上有這些基礎就夠了,後面遇到什麼問題在網上查找資料即可。也可以查看matlab本身的help幫助文檔。點擊這裡就可以查看,或者直接訪問地址:

https://ww2.mathworks.cn/help/

如果有不懂的函數,可以直接在命令窗口輸入help 再加上函數即可,比如輸入:

5.4   總結

Matlab方面的教程就跟大家講這麼多,後面需要那方面知識的時候,我們再具體的補充。學會這些基本的操作就可以入門了。永遠要記住,Matlab只是個工具,我們只需把它當個工具來用,沒有必要花大量的時間去研究,入門後用什麼學什麼即可。