MATLAB 常用函數匯總大全和高級應用總結

基礎應用

1. 基本數學運算函數

函數功能示例
abs(x)絕對值abs(-3)3
sqrt(x)平方根sqrt(16)4
exp(x)指數函數 exe^xexexp(1)2.7183
log(x)自然對數log(exp(3))3
log10(x)常用對數(以 10 為底)log10(100)2
sin(x), cos(x), tan(x)三角函數(弧度制)sin(pi/2)1
asin(x), acos(x), atan(x)反三角函數asin(1)1.5708
round(x)四舍五入round(3.6)4
floor(x)向下取整floor(3.6)3
ceil(x)向上取整ceil(3.2)4
mod(a,b)取模mod(7,3)1
rem(a,b)余數rem(7,3)1
sign(x)符號函數(-1, 0, 1)sign(-5)-1

2. 矩陣與數組操作

函數功能示例
size(A)返回矩陣維度size([1 2; 3 4])[2 2]
length(A)向量長度 / 最大維度長度length([1 2 3 4])4
numel(A)元素總數numel(eye(3))9
reshape(A,m,n)改變矩陣形狀reshape(1:6,2,3) → 2x3 矩陣
transpose(A) / A.'轉置(不共軛)[1+2i 3; 4 5]'
ctranspose(A) / A'共軛轉置[1+2i 3; 4 5]'
diag(A)提取/生成對角矩陣diag([1 2 3])
triu(A)上三角矩陣triu(magic(3))
tril(A)下三角矩陣tril(magic(3))
inv(A)矩陣求逆inv([1 2; 3 4])
pinv(A)廣義逆(偽逆)pinv([1 2; 3 4])
det(A)行列式det([1 2; 3 4])
rank(A)矩陣秩rank([1 2; 2 4])1
eig(A)特征值與特征向量[V,D] = eig([1 2; 2 1])
svd(A)奇異值分解[U,S,V] = svd(rand(3))

3. 統計與線性代數

函數功能示例
mean(A)平均值mean([1 2 3])2
median(A)中位數median([1 3 2])2
var(A)方差var([1 2 3])1
std(A)標準差std([1 2 3])1
sum(A)求和sum([1 2 3])6
prod(A)連乘prod([1 2 3])6
max(A)最大值max([3 7 2])7
min(A)最小值min([3 7 2])2
corrcoef(A,B)相關系數corrcoef([1 2 3],[2 4 6])

4. 繪圖與可視化

函數功能示例
plot(x,y)二維折線圖plot(0:0.1:2*pi, sin(0:0.1:2*pi))
scatter(x,y)散點圖scatter(rand(10,1), rand(10,1))
bar(y)柱狀圖bar([1 3 2])
histogram(A)直方圖histogram(randn(1000,1))
pie(A)餅圖pie([2 3 4])
surf(X,Y,Z)三維曲面圖surf(peaks)
mesh(X,Y,Z)三維網格圖mesh(peaks)
contour(X,Y,Z)等高線圖contour(peaks)
imshow(I)顯示圖像imshow(imread('cameraman.tif'))
imagesc(A)可視化矩陣imagesc(magic(5))

5. 文件輸入輸出

函數功能示例
load('file.mat')讀取 .mat 文件load('data.mat')
save('file.mat','A')保存變量save('result.mat','A')
csvread('file.csv')讀取 CSVcsvread('data.csv')
csvwrite('file.csv',A)寫入 CSVcsvwrite('output.csv',A)
xlsread('file.xlsx')讀取 Excel[num,text,raw] = xlsread('data.xlsx')
xlswrite('file.xlsx',A)寫 Excelxlswrite('out.xlsx',rand(5))
fopen, fclose, fscanf, fprintf文本文件操作fid=fopen('test.txt','w'); fprintf(fid,'%f',pi); fclose(fid);

6. 圖像處理常用函數

函數功能示例
imread('file')讀入圖像I = imread('cameraman.tif')
imwrite(I,'file')保存圖像imwrite(I,'out.png')
rgb2gray(I)彩色轉灰度Igray = rgb2gray(I)
imresize(I, scale)圖像縮放imresize(I,0.5)
imrotate(I, angle)圖像旋轉imrotate(I,45)
imcrop(I, rect)裁剪圖像imcrop(I,[50 50 100 100])
edge(I,'canny')邊緣檢測BW = edge(I,'canny')
fft2(I)二維傅里葉變換F = fft2(I)
ifft2(F)逆變換I2 = ifft2(F)

7. 信號處理常用函數

函數功能示例
fft(x)快速傅里葉變換fft([1 2 3 4])
ifft(X)逆 FFTifft(fft([1 2 3 4]))
filter(b,a,x)IIR/FIR 濾波y = filter([1 -1],[1],x)
conv(x,h)卷積conv([1 2 3],[1 1])
xcorr(x,y)互相關xcorr([1 2 3],[1 1])
spectrogram(x)時頻分析spectrogram(sin(0:0.01:10))

8. 符號運算(Symbolic Math Toolbox)

函數功能示例
syms x定義符號變量syms x y
diff(f,x)符號微分diff(sin(x),x)cos(x)
int(f,x)不定積分int(x^2,x)x^3/3
int(f,a,b)定積分int(x^2,0,1)1/3
limit(f,x,a)極限limit(sin(x)/x,x,0)1
solve(eq,x)解方程solve(x^2-4==0,x)±2
taylor(f,x,a,n)泰勒展開taylor(exp(x),x,0,5)

高級應用

1.進階數據結構與類型

  • Table / timetable / categorical

    • table, readtable, writetable:面向列的數據表,適合異構列(數值、字符串、類別)。
    • timetable:帶時間索引的表,方便時序數據操作(retime, synchronize)。
    • categorical:節省內存并提高分組/比較效率,適用于離散標簽。
    T = readtable('data.csv');
    TT = table2timetable(T,'RowTimes','Time');
    TT2 = retime(TT,'daily','mean');
    
  • Sparse 矩陣

    • sparse, nnz, spy,用于大規模稀疏系統;線性求解優先用 \(背后自動選最優方法),或 eigs, chol(稀疏 Cholesky)。
    A = sparse(i,j,v,m,n);
    x = A\b;        % 高效稀疏求解
    
  • Containers & 高級集合

    • containers.Map(鍵值表)、datetime / durationstring(比 char 更現代)、cell/struct

2.數值線性代數與穩定性技巧

  • 優先使用高層函數(A\b)而非顯式 inv(A)

  • 常用穩定/高效求解器

    • \ (mldivide)、lsqminnorm(欠定最小范數)、linsolve(可傳選項)、chol/cholupdateluqreigs
  • SVD/秩相關:對病態問題用 svdsvds 分析奇異值分布,做截斷正則化(TSVD)。

  • 正則化 & 數值穩定化Tikhonov(添加 lambda*I)、pinv(偽逆)、ridge(統計工具箱)。

3. 性能優化與向量化(最影響速度的點)

  • 預分配:先 zeros, nan, cell,避免動態擴容。

    A = zeros(1,1e6);
    for k=1:1e6, A(k)=k; end
    
  • 向量化替代循環:盡量用矩陣運算、邏輯索引、bsxfun(舊),現在優先隱式擴展(implicit expansion)。

    % loop -> vectorized
    % for i: y(i)=a(i)+b;
    y = a + b;        % 隱式擴展 / 向量運算
    
  • 高效索引技巧:邏輯索引、find,用 accumarray 做分組統計替代循環。

  • 減少臨時變量 / 內存峰值:鏈式運算可能產生臨時大數組,必要時分步并 clear 臨時結果。

  • 內存查看與管理whos, memory(Windows)查看內存分配;大數組用 singlegpuArray(見下)減小占用。

  • JIT-friendly 代碼:避免在循環中使用復雜動態結構(動態字段、增長的 cell),保持數組類型一致。

4.并行計算與 GPU 加速

  • 多核并行(本地/集群)

    • parpool, parfor:并行 for;適合獨立迭代任務。
    • spmd:分布式并行,處理分塊數據或 Message Passing。
    • parfeval, backgroundPool:異步執行(注意你不能讓我后臺執行——這里僅說明)。
    parpool(4);
    parfor i=1:Nout(i) = heavyFunc(i);
    end
    
  • GPU 加速(需要 Parallel Computing Toolbox & GPU 支持)

    • gpuArray, gather, arrayfun(GPU 上的 elementwise 函數),大多數線性代數/FFT/conv 支持 GPU 版本。
    A_gpu = gpuArray(rand(1000));
    B_gpu = A_gpu * A_gpu;
    B = gather(B_gpu);
    
  • 處理大數據tall arrays(惰性評估)、datastore(分塊讀入 CSV/Datastore)、mapreduce(大數據 MapReduce 風格)。

    ds = datastore('bigdata/*.csv');
    tt = tall(ds);
    meanVal = mean(tt.Value);   % 在本地機器/cluster 上可擴展
    

5.I/O、數據持久化與大文件處理

  • 高效讀寫matfile(增量讀寫 .mat)、memmapfile(二進制內存映射)、datastore/tall

    m = matfile('large.mat','Writable',true);
    chunk = m.A(1:1000,:);   % 不會把整個文件載入內存
    
  • 表格/文本readtable / writetable / detectImportOptions 用于自動推斷與自定義列類型。

  • 圖像/視頻imread, imwrite, VideoReader, VideoWriter,對大視頻做分幀處理并行化。

6.繪圖、可視化與發布

  • 現代繪圖 APItiledlayout 替代 subplotuifigure + uicontrol 用于交互式 GUI(App Designer)。

  • 導出高質量圖exportgraphics, print, saveas,常配 -r300-r600 輸出高分辨率圖。

  • 交互與動畫plotly(第三方)、getframe/movie, animatedline(實時時繪圖)。

  • 三維/體數據trisurf, isosurface, volshow(App),pcshow(點云)、pcread/pcwrite

    tiledlayout(1,2);
    ax1 = nexttile; plot(ax1,x,y);
    ax2 = nexttile; imagesc(ax2,rand(100));
    exportgraphics(gcf,'fig.png','Resolution',300);
    

7.圖像/信號處理常用進階函數

  • 圖像(Image Processing Toolbox)imfilter, imgaussfilt, imbinarize, imopen/imclose, regionprops, bwconncomp
  • 特征與匹配(Computer Vision Toolbox)detectSURFFeatures, detectHarrisFeatures, extractFeatures, matchFeatures
  • 頻域/濾波(Signal Processing Toolbox)designfilt, filtfilt, butter, spectrogram, welch

8.調試、性能剖析與測試

  • 調試工具:斷點、dbstop if error, keyboarddisp/fprintf

  • 分析性能profile on; ...; profile viewer,關注 CPU hotspots 與內存分配。

  • 單元測試matlab.unittest 框架(測試類、斷言、測試套件、mock)。

    import matlab.unittest.TestCase
    classdef MyTest < TestCasemethods(Test)function testSimple(tc)tc.verifyEqual(1+1,2);endend
    end
    
  • 代碼覆蓋率:使用 matlab.unittest.TestRunner 的覆蓋率插件檢查測試覆蓋度。

9.代碼組織與工程化

  • 函數與包:使用 +package 命名空間和 @class(類)組織大型項目;addpath, savepath 管理路徑。

  • 面向對象:值類(默認) vs 句柄類(繼承 handle),注意句柄類的共享語義與內存管理。

  • 函數接口設計:使用 inputParserarguments(新語法,R2019b 及以后)做參數檢查和默認值。

    function out = myfun(a,b,varargin)p = inputParser;addOptional(p,'scale',1,@isnumeric);parse(p,varargin{:});s = p.Results.scale;out = a + b*s;
    end
    
  • 文檔與示例:在 .m 文件頂部用 help 注釋,doc 自動生成幫助文檔;使用 Live Script(.mlx)寫可交互教程。

10.與外部語言/工具互操作

  • MEX / C / C++:用 mex 編譯 C/C++ 代碼以加速關鍵內核(注意內存管理與類型轉換)。

  • Python 集成py 命名空間直接調用 Python,或用 pyrun

    py.numpy.array([1,2,3]);
    
  • Java / .NET:MATLAB 可直接調用 Java 類或編譯為 Java 包。

  • 部署MATLAB Compiler 打包為獨立應用或庫(注意 license 要求),Simulink Coder 生成 C 代碼嵌入設備。

11.常見陷阱與實戰建議

  • 不要用 for 盲目替代向量化,在某些含大量復雜邏輯的情形下 parfor + preallocation 更適合。
  • 避免 eval:維護性差且慢,用 function handlesstr2func 替代。
  • 注意隱式類型轉換:字符串、char、cell 和 categorical 的混用會引發奇怪錯誤。
  • 隨機性可復現rng(seed,'twister') 固定種子。
  • I/O 性能:對重復讀寫大數組采用 matfile 或二進制格式減少開銷。
  • 版本差異bsxfun 在舊版必須用,新版(R2016b 以后)支持隱式擴展;使用前確認目標用戶的 MATLAB 版本。

12.示例:把一個循環向量化(實用示例)

原始循環:

for i=1:nC(i,:) = A(i,:) + B(i,:);
end

向量化后:

C = A + B;   % 直接矩陣運算(隱式擴展或逐元素相加)

13.小結與進一步學習路徑

  • 優先掌握:向量化、預分配、內存管理、parforgpuArraytable/timetablematfile/datastore

  • 建議練習:

    1. profile 找到瓶頸并向量化;
    2. 將耗時子函數改寫為 MEX 或 GPU;
    3. 學會用 tall/datastore 處理超內存數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/923549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/923549.shtml
英文地址,請注明出處:http://en.pswp.cn/news/923549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue el-cascader級聯選擇器-地區三級選擇問題記錄

1.表單編輯回顯問題處理-添加leaf葉子節點<el-form-item label"所在地區" prop"addressCode" required><el-cascader ref"cascader" v-model"form.addressCode" :props"props" change"addressChange" :c…

動態主機配置協議(DHCP)詳解

一、 概述DHCP協議Dynamic Host Configuration Protocol &#xff0c;動態主機配置協議作用&#xff1a;動態的進行IP地址分配服務端的監聽端口 67/udp客戶端監聽端口 68/udp網絡架構 C/S&#xff1a;client/serverDHCP的優勢提高配置效率減少配置錯誤DHCP的分配方式手動分配&a…

單變量單步時序預測 | TCN-LSTM時間卷積結合長短期記憶神經網絡(MATLAB)

? 一、主要功能 該代碼實現了一個結合時序卷積網絡(TCN)和長短期記憶網絡(LSTM)的混合深度學習模型,用于時間序列預測。具體任務是:利用前24個時間步的數據(輸入特征維度為24),來預測下一個時間步的值(輸出維度為1),屬于單變量時間序列滾動預測。 ? 二、算法步驟…

【智能體】rStar2-Agent

rStar2-Agent 是一篇在大模型推理領域極具洞察力和工程實力的工作&#xff0c;它沒有追求參數規模的堆砌&#xff0c;而是通過精巧的算法設計和系統優化&#xff0c;在一個14B的小模型上實現了媲美671B大模型的數學推理能力。 核心思想非常明確&#xff1a;讓模型“想得更聰明”…

Coze源碼分析-資源庫-創建知識庫-后端源碼-核心技術與總結

11. 核心技術特點 11.1 知識庫創建的分層架構設計 清晰的職責分離&#xff1a; API層&#xff08;knowledge_service.go&#xff09;&#xff1a;負責知識庫創建請求處理、參數驗證、響應格式化應用層&#xff08;knowledge.go&#xff09;&#xff1a;負責知識庫創建業務邏輯編…

Nano Banana制作3D立體打印效果圖

Nano Banana介紹Nano Banana 是 Google 于 2024 年推出的革命性 AI 驅動圖像生成與編輯模型&#xff0c;正式名稱為 Gemini 2.5 Flash Image。以下是對它的詳細介紹&#xff1a;技術背景&#xff1a;Nano Banana 基于 Google DeepMind 最新的 Gemini 2.5 Flash Image 架構&…

繼續吐槽Rstudio

前言 繼上次《怪談級別疑難問題收錄》后&#xff0c;怪談級別的疑難問題又更新了&#xff0c;這次更新了三個讓人吐血的奇葩問題&#xff0c;其中就包括大家又愛又恨的Rstudio&#xff0c;一起圍觀下。 本教程基于Linux環境演示&#xff0c;計算資源不足的同學可參考&#xf…

C++:string模擬實現中的賦值拷貝函數現代寫法詭異地崩掉了......

事情是這樣的&#xff1a;博主今天回看以前實現過的string&#xff0c;當時就遇到了一個bug:可見博主當時的破防。因為最近在集中復盤C初階部分&#xff0c;就有點好奇年輕的時候自己寫的模擬string是什么樣。沒想到給我自己留了個bug。現在來細看這個場景&#xff1a;為了測試…

機器學習-Bagging

Bagging-Bootstrap AGGrgratING Bagging并行訓練n個基本學習器&#xff08;base learner&#xff09;通過平均所有學習器的輸出&#xff08;回歸&#xff09;或主投票&#xff08;分類&#xff09;做決策每個模型是用在訓練集上通過bootstrap采樣得到的新的數據集進行訓練得到的…

Unity3D Shader 入門知識

Unity3D Shader 入門知識詳解。 Unity3D Shader 入門知識 Shader&#xff08;著色器&#xff09;對很多 Unity 初學者來說像是“黑魔法”。 實際上&#xff0c;Shader 并沒有那么神秘&#xff0c;它本質上就是一段運行在 GPU 上的小程序&#xff0c;用來控制 屏幕上每個像素的顏…

【面試之Redis篇】主從復制原理

從面試的角度來解釋 Redis 主從復制原理&#xff0c;按照“總-分-總”的結構&#xff0c;清晰地闡述其核心概念、工作流程和關鍵要點&#xff0c;這能體現出你不僅知道是什么&#xff0c;還理解為什么以及如何應對相關問題。總覽&#xff1a;一句話定義 面試官您好&#xff0c;…

數據庫開啟ssl

數據庫&#xff1a;阿里云rds 系統&#xff1a;centos 需要修改的&#xff1a;nacos連接項目連接本地navicat連接 重點&#xff1a;為了兼容本地和服務器&#xff0c;ssl證書路徑由原來的絕對路徑換成環境變量參數&#xff0c;所以有步驟4 文章目錄步驟1 阿里云步驟2 navicat…

Redis 事件驅動與多路復用源碼剖析

Redis 事件驅動與多路復用源碼剖析1. 前言 Redis 是 單線程 I/O 多路復用 的典型代表。 它并不是多線程處理請求&#xff0c;而是依賴 事件驅動&#xff08;event-driven&#xff09;模型&#xff0c;在一個線程內高效管理海量連接。 核心組件&#xff1a; ae.c&#xff1a;事…

VR煤礦實訓系統相較于傳統煤礦培訓方式的獨特優勢?-廣州華銳互動

高度逼真&#xff0c;沉浸體驗?VR煤礦實訓系統運用先進的3D建模、動態仿真技術&#xff0c;對煤礦井下的復雜環境進行1:1還原。從幽深的巷道、運轉的采煤設備&#xff0c;到潮濕的空氣、昏暗的燈光&#xff0c;甚至細微的煤塵顆粒&#xff0c;都能逼真呈現。使用者戴上VR設備后…

javaweb XML DOM4J

XMLXML作用就是配置文件&#xff0c;properties使用不了較復雜的需求&#xff0c;xml應運而生配置文件對比 xml更方便tips1:新建resources目錄&#xff0c;并將src中的jdbc.properties移到resourcs中&#xff0c;并且右鍵標記為源代碼根目錄&#xff0c;這樣運行src時就會和pro…

多模態視頻理解領域 Benchmark 與 Leaderboard 整理

多模態視頻理解是當前人工智能領域的研究熱點&#xff0c;其核心目標是讓模型像人類一樣&#xff0c;綜合視頻中的視覺、聽覺&#xff08;部分場景&#xff09;及文本信息&#xff0c;實現對視頻內容的深度感知、理解與推理。為客觀評估模型性能&#xff0c;行業內涌現了眾多權…

18j621-3通風天窗圖集pdf(免費高清版)

18j621-3通風天窗已經替代05j621-3通風天窗圖集成為目前比較通用的建筑屋頂通風選型重要參考標準&#xff0c;18j621-3圖集是對前圖集的優化和革新&#xff0c;在18j621-3圖集中新增了TC8圓拱型電動采光天窗&#xff0c;豐富了屋面通風排煙設備的選型。在18j621-3天窗圖集中&am…

LawGPT:基于中文法律知識的大模型

本文轉載自&#xff1a;https://www.hello123.com/lawgpt ** 一、?? LawGPT&#xff1a;中文法律界的 “AI 法助”&#xff0c;啃透了 15 萬份判決書&#xff01; LawGPT 是一系列專攻中文法律知識的開源大模型&#xff0c;在通用中文基座&#xff08;如 ChatGLM&#xff0…

用 go-commons 快速寫一個監控 CPU/內存的 Exporter

歡迎加入開源項目&#xff0c;提你的 mr Go Commons&#xff1a;Golang 開發者的常用工具集&#xff0c;一站式解決常見需求 在 Go 語言的開發過程中&#xff0c;你是不是經常遇到這樣的情況&#xff1a; 想要做點小功能&#xff0c;卻得從零寫起&#xff0c;或者到處找三方…

KingbaseES客戶端工具Ksql使用全指南:從安裝到高級操作

引言 在國產數據庫蓬勃發展的今天&#xff0c;KingbaseES憑借其自主可控、高性能、高可用的特性&#xff0c;已成為政務、金融、能源等關鍵領域的首選數據庫。而作為其配套的命令行工具&#xff0c;Ksql更是DBA和開發人員的“瑞士軍刀”——它不僅能高效執行SQL查詢&#xff0c…