32個實用matlab編程技巧

2021-02-20 matlab愛好者

感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!若您對公眾號有什麼意見或建議,請在公眾號中回復或在任意文章底部留言!

今天給大家介紹一些編程小技巧,之前給大家介紹過matlab編程小技巧,本期是在之前的基礎之上做了修正和補充完善,下面一起來看看吧。

1、能用矩陣計算的就用矩陣計算,不能用矩陣計算的想方設法也要往矩陣計算上靠。

2、少用循環,尤其是避免多重循環嵌套,儘量用向量化的運算來代替循環操作。在必須使用多重循環的情況下,若各層循環執行的次數不同,則在循環的外層執行循環次數少的,內層執行循環次數多的。

3、在定義數組變量時先預定義數組的大小能大大提高計算效率。

4、對於多核CPU,使用parfor比用for更節約時間。

5、定義循環變量時,儘量不要使用i和j,因為i和j是matlab預留的虛數單位。

6、在m文件前面使用clear,close,clc等命令可以釋放內存、清理窗口。

7、對於三角函數計算,在系統默認函數前後面加"d"是直接進行角度計算,這裡"d"代表"degree",例如sind(30) = 0.5,效果與sin(30*pi/180)一樣,其他的有cosd、tand等。

8、在程序運行結束後,使用clearvars可以清掉不需要的變量而保留結果變量,例如,clearvars -except varA varB,意思是清除變量空間中除了變量varA,varB以外的所有變量。

9、使用Ctrl+C可以中止正在運行的程序。

10、doc + 函數名,直接打開相應函數的matlab幫助文檔。help + 函數名,在命令窗口中顯示相應函數的幫助信息。

11、在M腳本編輯器或在命令窗口中按"Tab"鍵可以補全函數名或變量名。

12、選中代碼按"Ctrl + R"鍵是一鍵注釋代碼,選中代碼按"Ctrl + T"鍵是一鍵取消注釋。

13、選中代碼按"Ctrl + I"鍵是一鍵智能對齊代碼。

14、在進行繪圖操作時,多使用figure命令,其作用是新建一個空的繪圖窗口,接下的繪圖命令可以將圖繪製在它裡面,而不會覆蓋其他繪圖窗口。

15、在命令窗口輸入edit或open+函數名可以快速打開m文件。

16、元胞數組可以存儲不同類型和大小的數據。

17、使用單精度 single替代雙精度 double可以節約內存開銷。

18、matlab 輸入Å (埃,Angstrom),示例: xlabel(' length(\AA)','interpreter','latex').

19、在matlab中顯示上下標,上標用'^',下標用'_'.

20、在matlab中輸入希臘字母及特殊字符,採用'\+字母或字符讀音',如: α \alpha.

21、成對符如括號、引號等的自動補全,matlab腳本編輯器本身不帶成對符自動補全的自動補全功能,不過可以通過輸入法設置就可以實現自動補全功能。如手心輸入法,打開「設置」,在「按鍵」下找到「智能符號設置」,勾選自動補全成對符,在編輯腳本打開此輸入法即可。

22、通過mat2cell命令可以方便快捷地將大矩陣劃分成一個個矩陣,通過使用cellfun命令可以快速對各個小矩陣進行各種處理。

23、對於安裝了支持GPU計算的計算機,可以通過gpuArray來快速使用GPU進行計算。當然對於數據量較小時,gpuArray的效率也不是太高,gpuArray.函數名可以調用一些內置的函數進行GPU計算,如果gpuArray.zeros(100,100)可以在GPU中生成100*100大小的0方陣。

24、計算完成後,使用save()函數將數據保存成本地mat文件,常用格式為 ① save('filename', 'var1', 'var2', ...):保存指定的變量在 filename 指定的文件中、② save matname var1 var2 .。

25、使用tic和toc命令可以獲取程序運行所花時間。也可以與if判斷語句相結合通過判斷運行時間來終端程序運行。示例:

for k = 1:1000

    tic;

    tmp = rand(k);

    tm = toc;

    % tmp語句運行時間超過0.001時程序就會跳出循環。

    if tm > 0.001  

        break;

    end

end

26、對多矩陣求和(sum)、平均值(mean)、最大值(max)等時,可以用冒號(:)符來直接取所有元素,而不是用這些命令嵌套。示例:x = rand(3,4,2,2),對x求和。使用嵌套的話要用四次sum,即sum(sum(sum(sum(x)))),而用冒號表達式則只需用一次,即sum(x(:))。這樣不僅使代碼簡潔,運行效率也會有所提高。

27、常用向量化函數 ——  accumarray、arrayfun 、bsxfun 、cellfun 、spfun 、structfun等。

28、通過delete命令可以實現m自毀功能,例如一個名為test.m的m文件,在程序結尾添加delete('test.m'); 程序運行完成後將自動刪除自身。

29、關於matlab中矩陣大小的計算函數,length函數計算矩陣最大維的大小;size函數計算各維的大小;numel函數計算矩陣中元素的總個數,如numel(A(:))。

30、程序調試神器命令 —— dbstop if error,添加此命令到程序中,程序運行中如果遇到錯誤將自動停止在錯誤處,對快速查找程序錯誤非常有幫助。

31、end命令的妙用,end除了作為自定義函數和控制流函數的終止標識符外,還能作為數組的末尾索引,如下:
A = rand(1,10);% A(10)和A(end),A(8)和A(end-2)是等價的。

32、路徑和文件相關的函數,也是很多初學的小夥伴常疑惑的問題,下面就來整理一下與路徑文件相關的命令:
pwd       % 獲取當前工作路徑dir       % 列出當前文件夾中的文件和文件夾ls        % 列出當前中文件夾內容 cd        % 打開指定文件mkdir     % 創建新文件夾rmdir     % 刪除文件夾copyfile  % 複製文件或文件夾movefile  % 移動或重命名文件或文件夾delete    % 刪除文件或對象

長期堅持創作不易,如果您喜歡這篇推文,煩請有空點個讚,以資鼓勵!喜歡就關注一下哦,謝謝!

相關焦點

  • Matlab的實用技巧(一)
    1個 %% 通用命令clear % 清除工作區所有變量。
  • 365°無死角剖析matlab代碼注釋
    今兒與大家聊聊matlab編程中最最基礎的東西——
  • matlab破解版7.0 32位&64位
    matlab7.0破解版可以用於技術計算,其高效的數值計算及符號計算功能,能使用戶從繁雜的數學運算分析中徹底解脫出來。同時matlab7.0破解版具有完備的圖形處理功能,可以實現計算結果和編程的可視化,還可以用於構建自定義的圖形用戶界面。
  • MATLAB技巧【乾貨】
    當你用同一種方法處理多個數據(點)的時候可以將code中的for改為parfor進行並行計算,當然也得遵守一些並行計算的編程規則,具體的請參考Parallel Computing Toolbox™ User's Guide –MathWorks prctile取百分比所對應值。
  • 一不小心用matlab做了個matlab註冊機
    想必大家對註冊機這三個字並不陌生,不少軟體採用通過綁定用戶硬體信息的方式來進行軟體授權
  • DSGE建模與編程入門(54):Matlab入門
    前面的50多期DSGE建模與編程大部分都是理論模型的相關講解,可在公眾話對話窗口回復DSGE查看往期匯總。往後,就給大家帶來軟體編程的一些入門級介紹。今天先給大家介紹一下Matlab入門。它是一款非常流行,且功能強大的程式語言。在Matlab環境下,我們可以進行矩陣運算,函數和數據圖形,算法運行,用戶界面製作,以及提供其它程式語言編寫的程序接口。Matlab是一款公認的功能十分強大的數學與工程軟體。但是,遺憾的是,它是一款收費軟體,而且價格不菲(即使這樣,也難不倒千千萬萬聰明的中國人)。
  • 大牛心得:學習matlab的一點心得體會
    無奈之下,我查了些文獻,了解計算的原理後便用比較熟悉的matlab編程解決這個問題,其實這個程序比較簡單——DGGE中條帶Shannon多樣性指數的計算 ,在現在看來,根本不值一提,但是在當時自我感覺還是不錯的,相當有成就感了。
  • Matlab編程並繪製函數或者信號包絡線
    >% Hilbert變換測試clcclear allclose allts = 0.001;fs = 1/ts;N = 200;f = 50;k = 0:N-1;t = k*ts;% 信號變換% 結論:sin信號Hilbert變換後為cos信號y = sin(2*pi*f*t);yh = hilbert(y); % matlab
  • MATLAB中內置了哪些函數是本科生常用的?
    修改舉報 • 邀請回答按投票排序按時間排序14 個回答11贊同反對,不會顯示你的姓名白如冰 ,四月到?月在東南大學無線谷11 人贊同我剛試了下就試出來max,min,plot,inv,det,zeros等這幾個算是built-in function。
  • matlab程序加速與優化
    不過這裡有兩個建議可以減緩這種問題:將程序分解成多次運行,儘量避免一次運行過長時間單次大內存消耗的matlab程序運行完將其關閉,下次運行時從新開啟多次大內存消耗的matlab程序運行完時,有條件的話最好重啟計算機將大內存消耗的matlab程序進行混合編程(包括將m文件轉成C++可用的庫,或者用C++/C寫然後轉成MATLAB可用的函數文件),
  • MATLAB裡那些牛逼兮兮的命令
    1.在命令行敲入 dbstop if error,如果運行出現錯誤,matlab會自動停在出錯的那行,並且保存所有相關變量。再也不用設斷點了有沒有!!!2.bsxfun強大的、萬能的、不同維數的矩陣擴展混合運算,從此告別矩陣運算中的for循環。
  • matlab編程基礎(一)
    ans,pi,eps(機器零域值,matlab中最小數),inf,NaN,i或j(虛數)4、關鍵字:用iskeyword可查看,break,case,end等,關鍵字做變量名matlab會提示出錯。=input('Enter the value of ''x'':');n=input('Enter the value of ''n'':');switch n case 1 y=sin(x); case 2 y=x+2; otherwise y=x;enddisp(['y=',num2str(y)]); %disp()函數將內容輸出到matlab
  • Matlab與excel、txt的交互
    擅長人工智慧算法編程與應用,包括遺傳算法、粒子群算法、神經網絡算法、模擬退火算法、蟻群算法。     如有相關的業務諮詢請點擊文末左下角閱讀原文,或在技術鄰站內、技術鄰APP搜索專家用戶名即可。Excel自帶了許多實用、便捷的數據處理功能,掌握這些技巧,往往足以進行數據的初步分析。但在需要進行模擬仿真等進一步操作的時候,需要將數據以矩陣形式導入Matlab中進行操作。因此熟練掌握Matlab與Excel的交互是程式設計師的一個不可缺少的基本技能。
  • 12個實用的 Javascript 奇淫技巧
    這裡分享12個實用的 Javascript 奇淫技巧        JavaScript自1995年誕生以來已去了16
  • 建議收藏 ▏新手簡明入門級matlab使用教程
    其中有幾個部分,請務必要顯示①Current Folder:中文一般翻譯成工作路徑,一般設置成一個自己建立的、有讀寫權限的文件夾,例如我的文檔下建立一個matlab文件夾②Command Window:字面意思是命令窗口,用來運行代碼,所有的代碼都是在這裡輸入③Workspace:字面意思是工作空間,其實就是暫存所有運行結果的地方,「暫」的具體含義是:關閉matlab後丟失
  • GPU中的並行運算,加速你的Matlab程序
    Kernel以線程網格(Grid)的形式組織,每個Grid由若干個線程塊(block)組成,每個block由若干個線程(thread)組成。Kernel以block為單位執行,Grid只是用來表示一系列可以被並行執行的block集合,而block間無法通信,沒有執行順序。
  • 分步指導 | 使用 MATLAB 面向對象編程創建專用圖表
    這種應用程式可能需要非常耗時的編程。Chart 對象可提供高級應用程式編程接口(API),實現可視化的自定義創建。圖表可為最終用戶提供方便的可視化 API,無需用戶執行低層圖形編程。圖2 可在 File Exchange 中下載自定義圖表:https://ww2.mathworks.cn/matlabcentral/fileexchange/65857-creating-specialized-charts-with-matlab-object-oriented-programming
  • MATLAB 中有哪些命令,讓人相見恨晚?
    裡所有以fun為後綴的命令都很好用,arrayfun,cellfun,structfun,等等@() 匿名函數使用函數式編程,在編寫以數學公式為主的程序中比傳統編程方法好得多set(gca,...)等所有與畫圖相關的命令都包含了千奇百怪的屬性和參數,非常實用,如著名的 set(gca,...)
  • 數據處理:Matlab之向量和數組的基本操作
    點擊上方藍字關注 無距書鄉 在《Matlab:學習我不需要編程基礎!》
  • 41款GUI實例助你隨心所欲玩轉matlab GUI開發【資料分享】
    今天給大家帶來由Matt Fig收集整理開發的GUI界面編程實例以及相關GUI編程問題錦集,資料包含41個GUI開發實例以及47個GUI開發問題,所有實例均在非GUIDE環境中開發,具有更強版本兼容性。