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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…