MATLAB使用教程(二)——在文件中編程——新手來看

·前言

在上一篇文章中,我們學習了

  1. 如何調整自己的工作區
  2. 使用matlab時的注意事項,比如不能按CTRL+Q
  3. 語句後面加分號,不是交互式,不加分號,會同時打印結果,即交互式。
  4. 字符串使用單引號纔可以。
  5. 變量賦值不需要提前聲明,隨時使用。
  6. clear清除變量,clc清除屏幕。
  7. who和whos查看我們已經擁有的變量的各項樹形。
  8. 類型強制轉換。

·本講準備

把matlab編碼調整爲utf-8編碼

首先,刪除這個部分(一定先備份這個lcdata.xml文件,備份就是拷貝一個副本),我的是2016版,大概在這裏,你們可以搜索以下:

然後,找到這個部分,增加一行:

最後,重啓matlab軟件,即可把編碼更改爲utf-8編碼。 

·本講開始

在別的語言中,都能使用文件寫代碼,然後使用解釋器運行或者使用編譯器編譯運行,比如 .c .cpp .py .go等,matlab也是一門語言,也可以使用文件來編程,在matlab中使用文件編程有以下注意事項:

  1. 後綴名是 .m
  2. 註釋符號是 %
  3. 建議在所有語句後面加分號(;),否則運行時會當作交互式命令輸出結果,從而掩蓋我們的重要信息。
  4. 文件名僅包含字母、下劃線、數字且不能以數字開頭。
  5. 編寫文件前檢查自己是否在工作目錄

編寫文件時,我們可以選擇使用matlab本身的編輯文檔編寫,也可以選擇自己的喜愛的編輯器比如vim,如下圖所示:

如果使用edit後面沒有加文件名,情況如下圖所示:

當我們沒有鍵入文件名字,需要按下保存鍵去保存。

·開始編程

下面以m01_hello.m文件爲例,首先打開文件寫入如下代碼(建議選擇matlab本身編輯,有自動補全。當然也可以使用別的編輯器)

% 這裏是註釋行,這個文件演示如何使用文件編輯代碼
disp('首先演示後面都加了分號的代碼');
age = 20;
name = 'chuckiezhu';
sentence = '你好啊!';
print_str = sprintf('%s年齡是%d.他說:"%s"\n', name, age, sentence);
% sprintf是格式化字符串的函數,返回一個格式化後的字符串
disp(print_str);  % 顯示目標字符串
disp('---------------分割線---------------------')
disp('然後演示後面都不加分號的代碼')
age = 20
name = 'chuckiezhu'
sentence = '你好啊!'
print_str = sprintf('%s年齡是%d.他說:"%s"\n', name, age, sentence)
% sprintf是格式化字符串的函數,返回一個格式化後的字符串
disp(print_str)  % 顯示目標字符串

·運行程序

matlab運行程序時要有以下注意事項:

  1. 文件名只能包含數字、下劃線、字母且不能以字母開頭
  2. 文件要包含在工作目錄內,即使用ls命令能看到,如下圖
  3. 輸入文件名然後回車直接運行程序,如圖

下面是上面代碼的運行結果:

可以看到運行出了結果,至於行尾加不加分號,憑個人喜好,但是我這裏有兩點建議:

  1. 調試程序時,最好不要加分號,這樣可以看到每一步的運行結果和自己的想法是否符合。 
  2. 實際運行程序時,加分號,防止交互式輸出影響我們的結果觀測。

·知識點小結

今天我們學習瞭如下知識:

  1. 如何在matlab中顯示一句話(使用disp函數)
  2. 怎麼格式化一個字符串(使用sprintf函數)
  3. 如何在文件中編寫matlab代碼(包括使用註釋)
  4. 如何調整matlab中的字符編碼爲utf-8
  5. 編寫.m文件時,行尾的分號什麼時候使用效果最佳

·文末彩蛋

表白神器,代碼如下:

[x,y,z]=meshgrid(linspace(-1.3,1.3)); 
val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9/80)*y.^2.*z.^3;
isosurface(x,y,z,val,0)
axis equal 
view(-10,24)
colormap flag 
camlight
lighting phong

運行效果如圖:

下期再見! 

----------------------------------------------2020年6月6日更新

關於代碼中第六行sprintf的用法:

先給各位道歉,我以爲你們都有C語言的基礎,以後我會注意這些問題。

sprintf函數的使用,現在的階段我們可以理解爲這樣(如果以後需要用到更高級的用法再講,一切實用爲主):

sprintf(p1[, p2 ...]);

這裏的p1是必需的,代表我們的原來的、未經處理的字符串。方括號內是可選的,用於添加參數,比如文章中的代碼:

sprintf('%s年齡是%d.他說:"%s"\n', name, age, sentence);

%s %d 是“佔位符”,就是說佔着這個位置,然後用後面的多餘的參數來填。

%s佔一個字符串的位置,%d佔一個整數的位置.

\n則是一個換行,類似的有\t(一個製表符位),\r (回車)等。

sprintf返回一個字符串,就是結果字符串。

 

disp則是將某個字符串顯示到終端中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章