下面是 MATLAB 中几个常用的基本函数总结,每个函数附带示例代码和解释。
1. length
- 获取数组的长度
length
返回数组的最长维度的大小,即如果是向量,返回其元素个数;如果是矩阵,返回行数和列数中的较大值。
A = [1, 2, 3, 4, 5];
len = length(A); % 结果为 5
B = [1, 2; 3, 4; 5, 6];
len = length(B); % 结果为 3,返回行数和列数中的较大值
2. size
- 获取矩阵的维度
size
返回矩阵的行数和列数,可以用来获取矩阵的大小。
B = [1, 2; 3, 4; 5, 6];
dims = size(B); % 结果为 [3, 2]
rows = size(B, 1); % 获取行数,结果为 3
cols = size(B, 2); % 获取列数,结果为 2
3. numel
- 获取数组的元素总数
numel
返回数组中所有元素的总个数。
A = [1, 2, 3, 4, 5];
count = numel(A); % 结果为 5
B = [1, 2; 3, 4; 5, 6];
count = numel(B); % 结果为 6
4. sum
- 计算数组元素的总和
sum
用于计算数组或矩阵沿指定维度的和。对向量计算元素总和,对矩阵计算每列的和。
A = [1, 2, 3, 4];
total = sum(A); % 结果为 10
B = [1, 2; 3, 4; 5, 6];
col_sum = sum(B); % 结果为 [9, 12],按列求和
row_sum = sum(B, 2); % 结果为 [3; 7; 11],按行求和
5. mean
- 计算数组元素的平均值
mean
用于计算数组或矩阵的平均值。对向量计算元素的平均值,对矩阵计算每列的平均值。
A = [1, 2, 3, 4];
avg = mean(A); % 结果为 2.5
B = [1, 2; 3, 4; 5, 6];
col_mean = mean(B); % 结果为 [3, 4],按列计算平均值
row_mean = mean(B, 2); % 结果为 [1.5; 3.5; 5.5],按行计算平均值
6. max
和 min
- 找到数组元素的最大值或最小值
max
返回数组或矩阵中的最大值,min
返回最小值。对于矩阵,可以选择在行或列上求最大或最小值。
A = [1, 5, 3, 4];
max_val = max(A); % 结果为 5
min_val = min(A); % 结果为 1
B = [1, 2; 3, 4; 5, 6];
col_max = max(B); % 结果为 [5, 6],按列计算最大值
row_min = min(B, [], 2); % 结果为 [1; 3; 5],按行计算最小值
7. find
- 查找满足条件的元素索引
find
返回数组中满足条件的元素的索引位置。
A = [1, 3, 5, 7, 9];
idx = find(A > 5); % 结果为 [4, 5],表示第4和第5个元素大于5
B = [1, 2; 3, 4; 5, 6];
idx = find(B > 3); % 结果为 [4, 5, 6],表示第4、5、6个元素大于3
8. sort
- 对数组排序
sort
用于对数组或矩阵的元素进行升序或降序排序。
A = [4, 2, 8, 1];
sorted_A = sort(A); % 结果为 [1, 2, 4, 8],升序排序
sorted_A_desc = sort(A, 'descend'); % 结果为 [8, 4, 2, 1],降序排序
B = [3, 1; 4, 2];
sorted_B = sort(B); % 按列排序,每列升序
9. unique
- 找到数组中的唯一值
unique
返回数组中的唯一元素,并按升序排列。
A = [1, 2, 2, 3, 3, 3, 4];
unique_A = unique(A); % 结果为 [1, 2, 3, 4]
10. plot
- 绘制二维图形
plot
是 MATLAB 中用于绘制二维图形的基本函数。
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y); % 绘制正弦曲线
title('Sine Wave');
xlabel('x');
ylabel('sin(x)');
11. reshape
- 改变数组形状
reshape
用于改变数组的形状而不改变数据的顺序。
A = [1, 2, 3, 4, 5, 6];
B = reshape(A, 2, 3); % 将 A 重新形状为 2 行 3 列矩阵
% 结果为
% B =
% 1 3 5
% 2 4 6
12. linspace
- 生成等间距数值向量
linspace
在指定的范围内生成等间距的数值。
x = linspace(0, 10, 5); % 在 0 到 10 之间生成 5 个等间距的点
% 结果为 x = [0, 2.5, 5, 7.5, 10]
13. diag
- 提取或创建对角矩阵
diag
可以用来提取矩阵的对角线元素,或创建一个对角矩阵。
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
d = diag(A); % 提取对角线元素,结果为 [1, 5, 9]
D = diag([10, 20, 30]); % 创建一个对角矩阵,主对角线元素为 [10, 20, 30]
% 结果为
% D =
% 10 0 0
% 0 20 0
% 0 0 30
14. zeros
和 ones
- 创建全零或全一矩阵
zeros
和 ones
用于创建指定大小的全零或全一矩阵。
Z = zeros(3, 3); % 创建 3x3 的全零矩阵
% 结果为
% Z =
% 0 0 0
% 0 0 0
% 0 0 0
O = ones(2, 4); % 创建 2x4 的全一矩阵
% 结果为
% O =
% 1 1 1 1
% 1 1 1 1
15. eye
- 创建单位矩阵
eye
用于创建单位矩阵,即主对角线为 1,其余元素为 0。
I = eye(3); % 创建 3x3 的单位矩阵
% 结果为
% I =
% 1 0 0
% 0 1 0
% 0 0 1
16. inv
- 求矩阵的逆矩阵
inv
用于求矩阵的逆矩阵,但前提是矩阵是方阵且可逆。
A = [1, 2; 3, 4];
A_inv = inv(A); % 求 A 的逆矩阵
% 结果为
% A_inv =
% -2.0000 1.0000
% 1.5000 -0.5000
17. transpose
或 .'
- 矩阵转置
transpose
或 .'
用于矩阵转置,将矩阵的行列互换。
A = [1, 2, 3; 4, 5, 6];
A_T = transpose(A); % 或使用 A.'
% 结果为
% A_T =
% 1 4
% 2 5
% 3 6
18. rand
和 randn
- 随机数生成
rand
生成均匀分布的随机数。randn
生成标准正态分布的随机数。
R = rand(2, 3); % 生成 2x3 的均匀分布随机数矩阵
N = randn(3, 2); % 生成 3x2 的标准正态分布随机数矩阵
19. abs
- 求绝对值
abs
用于计算每个元素的绝对值,适用于标量、向量或矩阵。
A = [-1, 2, -3, 4];
B = abs(A); % 结果为 [1, 2, 3, 4]
20. round
, floor
, ceil
- 取整函数
round
将每个元素四舍五入到最近的整数。floor
将每个元素向下取整到最近的整数。ceil
将每个元素向上取整到最近的整数。
A = [1.2, 3.5, -2.8];
B = round(A); % 结果为 [1, 4, -3]
C = floor(A); % 结果为 [1, 3, -3]
D = ceil(A); % 结果为 [2, 4, -2]
21. diff
- 计算差分
diff
用于计算数组或矩阵中相邻元素的差。
A = [1, 2, 4, 7, 11];
B = diff(A); % 结果为 [1, 2, 3, 4]
22. cumsum
和 cumprod
- 累积求和和累积乘积
cumsum
计算累积和。cumprod
计算累积乘积。
A = [1, 2, 3, 4];
sum_A = cumsum(A); % 结果为 [1, 3, 6, 10]
prod_A = cumprod(A); % 结果为 [1, 2, 6, 24]
23. subplot
- 创建多子图
subplot
用于在同一个窗口中绘制多个子图。
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
subplot(2, 1, 1); % 创建 2 行 1 列的子图,当前图为第 1 个
plot(x, y1);
title('Sine Wave');
subplot(2, 1, 2); % 当前图为第 2 个
plot(x, y2);
title('Cosine Wave');
24. legend
- 添加图例
legend
用于为图形添加图例,以便区分不同的数据。
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(x, y1, '-r', x, y2, '-b'); % 绘制正弦和余弦曲线
legend('Sine', 'Cosine'); % 添加图例
25. hold on
和 hold off
- 保持或释放当前图形
hold on
保持当前图形窗口,可以在同一个图上绘制多个数据集。hold off
释放图形窗口,绘制新的图形会覆盖当前图形。
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(x, y1, '-r'); % 绘制正弦曲线
hold on;
plot(x, y2, '-b'); % 在同一图形上绘制余弦曲线
hold off;
26. save
和 load
- 文件保存和加载
save
用于将变量保存到文件中,通常保存为.mat
文件。load
用于从文件中加载变量。
A = [1, 2, 3; 4, 5, 6];
save('myData.mat', 'A'); % 保存变量 A 到 myData.mat 文件中
clear A; % 清除变量 A
load('myData.mat'); % 从文件中加载变量 A
disp(A); % 显示加载的 A
27. fprintf
和 sprintf
- 格式化输出
fprintf
用于将格式化数据输出到命令行或文件。sprintf
将格式化数据转换为字符串。
x = 3.14159;
fprintf('The value of x is %.2f\n', x); % 输出为 "The value of x is 3.14"
str = sprintf('The value of x is %.2f', x); % 将结果存为字符串
disp(str); % 输出字符串
28. cell
和 cellfun
- 创建和操作单元格数组
cell
用于创建单元格数组,可以存储不同类型的数据。cellfun
用于对单元格数组的每个元素应用函数。
C = cell(2, 2); % 创建一个 2x2 的空单元格数组
C{1, 1} = 'Hello'; % 在单元格数组中存储字符串
C{1, 2} = [1, 2, 3]; % 在单元格数组中存储数组
% 使用 cellfun 计算每个单元格的大小
sizes = cellfun(@numel, C);
disp(sizes); % 显示每个单元格的元素数量
29. struct
和 fieldnames
- 结构体操作
struct
用于创建结构体,可以包含多个字段。fieldnames
返回结构体的字段名称。
person = struct('Name', 'John', 'Age', 30, 'City', 'New York'); % 创建结构体
fields = fieldnames(person); % 获取结构体的字段名称
disp(fields); % 输出字段名称列表
30. isnan
和 isinf
- 检查 NaN 和 Inf 值
isnan
检查数组中是否有 NaN(非数字)值。isinf
检查数组中是否有 Inf(无穷大)值。
A = [1, NaN, 3, Inf];
nan_elements = isnan(A); % 结果为 [false, true, false, false]
inf_elements = isinf(A); % 结果为 [false, false, false, true]
31. interp1
- 一维插值
interp1
用于对一维数据进行插值,可用于在已知数据点之间进行估计。
x = [1, 2, 3, 4];
y = [10, 20, 30, 40];
xq = 2.5; % 查询点
yq = interp1(x, y, xq); % 在 x = 2.5 处插值
disp(yq); % 结果为 25
32. diff
- 计算数组的差分
diff
计算数组中相邻元素的差,常用于数值微分。
A = [1, 2, 4, 7, 11];
B = diff(A); % 结果为 [1, 2, 3, 4],计算相邻元素的差
33. polyfit
和 polyval
- 数据拟合和评估
polyfit
用于多项式拟合。polyval
用于计算多项式的值。
x = [1, 2, 3, 4];
y = [6, 5, 7, 10];
p = polyfit(x, y, 2); % 拟合二次多项式
y_fit = polyval(p, x); % 使用拟合结果计算 y 值
disp(y_fit);
34. meshgrid
- 创建网格矩阵
meshgrid
用于创建二维和三维图形的网格坐标。
[x, y] = meshgrid(-5:1:5, -5:1:5);
z = x.^2 + y.^2;
surf(x, y, z); % 绘制三维曲面图
35. unique
- 找到数组中的唯一值
unique
返回数组中的唯一元素,并按升序排列。
A = [1, 2, 2, 3, 3, 3, 4];
unique_A = unique(A); % 结果为 [1, 2, 3, 4]
36. hist
和 histogram
- 绘制直方图
hist
用于绘制旧版的直方图。histogram
是较新版本的绘制直方图的函数。
data = randn(1000, 1);
histogram(data, 20); % 将数据分为 20 个区间绘制直方图
37. quiver
- 绘制向量场
quiver
用于绘制二维向量场图,通常用于显示矢量方向和大小。
[x, y] = meshgrid(-2:0.5:2, -2:0.5:2);
u = -y; % x 方向速度
v = x; % y 方向速度
quiver(x, y, u, v); % 绘制向量场
38. fplot
- 绘制函数图形
fplot
用于绘制一个函数的图形,不需要提前计算函数值。
f = @(x) sin(x) ./ x;
fplot(f, [-10, 10]); % 绘制 f(x) = sin(x) / x 的图形
39. trapz
- 数值积分
trapz
使用梯形法对离散数据进行数值积分。
x = 0:0.1:10;
y = sin(x);
area = trapz(x, y); % 使用梯形法计算积分
disp(area);
40. integral
- 符号函数的数值积分
integral
用于对一个符号函数进行数值积分。
f = @(x) x.^2;
result = integral(f, 0, 1); % 对 f(x) = x^2 从 0 到 1 进行积分
disp(result); % 结果为 1/3 = 0.3333
41. fft
- 快速傅里叶变换
fft
用于计算信号的频域表示。
t = 0:0.001:1;
x = sin(2*pi*50*t) + sin(2*pi*120*t); % 复合信号
y = fft(x); % 快速傅里叶变换
plot(abs(y)); % 绘制幅值谱
42. ifft
- 逆快速傅里叶变换
ifft
用于将频域信号转换回时域。
y_inv = ifft(y); % 逆快速傅里叶变换
plot(real(y_inv)); % 绘制原始信号
43. image
和 imshow
- 显示图像
image
用于显示数据矩阵作为图像。imshow
用于显示图像文件或矩阵数据。
A = magic(5);
image(A); % 显示数据矩阵 A 为图像
I = imread('peppers.png'); % 读取图像文件
imshow(I); % 显示图像
44. imread
和 imwrite
- 图像读写
imread
用于读取图像文件。imwrite
用于将图像数据写入文件。
I = imread('peppers.png'); % 读取图像文件
grayI = rgb2gray(I); % 转为灰度图像
imshow(grayI); % 显示灰度图像
% 将灰度图像写入文件
imwrite(grayI, 'gray_peppers.png'); % 保存灰度图像为 gray_peppers.png
45. rgb2gray
- 转换为灰度图像
rgb2gray
用于将彩色图像转换为灰度图像。
I = imread('peppers.png'); % 读取彩色图像
grayI = rgb2gray(I); % 转换为灰度图像
imshow(grayI); % 显示灰度图像
46. imresize
- 调整图像大小
imresize
用于调整图像的大小。
I = imread('peppers.png');
smallI = imresize(I, 0.5); % 将图像缩小为原来的一半
imshow(smallI); % 显示缩放后的图像
47. imrotate
- 旋转图像
imrotate
用于将图像旋转指定的角度。
I = imread('peppers.png');
rotatedI = imrotate(I, 45); % 将图像旋转 45 度
imshow(rotatedI); % 显示旋转后的图像
48. conv
和 conv2
- 一维和二维卷积
conv
用于一维卷积,通常用于信号处理。conv2
用于二维卷积,通常用于图像处理。
% 一维卷积
a = [1, 2, 3];
b = [4, 5];
c = conv(a, b); % 结果为 [4, 13, 22, 15]
% 二维卷积
A = [1, 2; 3, 4];
B = [0, 1; 1, 0];
C = conv2(A, B); % 结果为 3x3 的卷积结果矩阵
49. eig
- 求矩阵的特征值和特征向量
eig
用于计算方阵的特征值和特征向量。
A = [1, 2; 2, 1];
[V, D] = eig(A); % D 是特征值对角矩阵,V 是特征向量矩阵
50. svd
- 奇异值分解
svd
用于对矩阵进行奇异值分解,广泛用于数据压缩、降维和图像处理等领域。
A = [1, 2; 3, 4; 5, 6];
[U, S, V] = svd(A); % U 和 V 是正交矩阵,S 是奇异值对角矩阵
51. pinv
- 伪逆矩阵
pinv
用于计算矩阵的伪逆,通常用于线性方程组的最小二乘解。
A = [1, 2; 3, 4];
A_pinv = pinv(A); % 计算 A 的伪逆
52. det
- 计算矩阵的行列式
det
用于计算方阵的行列式。
A = [1, 2; 3, 4];
det_A = det(A); % 结果为行列式值 -2
53. rank
- 计算矩阵的秩
rank
用于计算矩阵的秩,通常用于判断矩阵是否满秩。
A = [1, 2; 3, 4];
rank_A = rank(A); % 结果为 2,表示矩阵 A 是满秩的
54. corrcoef
- 计算相关系数矩阵
corrcoef
用于计算两个变量的相关系数,判断它们之间的相关性。
x = [1, 2, 3, 4, 5];
y = [2, 4, 6, 8, 10];
R = corrcoef(x, y); % 计算 x 和 y 之间的相关系数
55. bsxfun
- 按元素应用函数
bsxfun
按元素对数组应用指定的函数,通常用于不同大小数组的按元素运算。
A = [1; 2; 3];
B = [4, 5, 6];
C = bsxfun(@plus, A, B); % 对 A 和 B 进行按元素加法
% 结果为:
% C =
% 5 6 7
% 6 7 8
% 7 8 9
56. ode45
- 数值求解常微分方程
ode45
是 MATLAB 中用于求解常微分方程的函数。
% 定义微分方程 dy/dt = -2y
dydt = @(t, y) -2 * y;
% 使用 ode45 求解从 t = 0 到 t = 5,初始条件 y(0) = 1
[t, y] = ode45(dydt, [0, 5], 1);
plot(t, y); % 绘制解的曲线
57. norm
- 计算向量或矩阵的范数
norm
用于计算向量或矩阵的范数,默认是 2 范数。
A = [3, 4];
norm_A = norm(A); % 结果为 5,计算 2 范数 sqrt(3^2 + 4^2)
58. sum
和 prod
- 数组的求和与乘积
sum
计算数组中元素的总和。prod
计算数组中元素的乘积。
A = [1, 2, 3, 4];
total_sum = sum(A); % 结果为 10
total_prod = prod(A); % 结果为 24
59. cumprod
- 累积乘积
cumprod
计算数组的累积乘积,即前 n 个元素的乘积。
A = [1, 2, 3, 4];
cum_product = cumprod(A); % 结果为 [1, 2, 6, 24]
60. movmean
- 移动平均值
movmean
用于计算数据的移动平均值,通常用于数据平滑。
A = [1, 2, 3, 4, 5, 6];
mov_avg = movmean(A, 3); % 计算 3 个元素的移动平均值
% 结果为 [1.5, 2, 3, 4, 5, 5.5]
61. mesh
和 surf
- 三维网格和曲面图
mesh
用于绘制三维网格图。surf
用于绘制三维曲面图。
[X, Y] = meshgrid(-5:0.5:5, -5:0.5:5);
Z = X.^2 + Y.^2;
figure;
mesh(X, Y, Z); % 绘制网格图
figure;
surf(X, Y, Z); % 绘制曲面图
62. contour
- 等高线图
contour
用于绘制二维数据的等高线图。
[X, Y] = meshgrid(-5:0.5:5, -5:0.5:5);
Z = X.^2 + Y.^2;
contour(X, Y, Z); % 绘制等高线图
63. sub2ind
和 ind2sub
- 坐标和线性索引之间的转换
sub2ind
将矩阵的行列坐标转换为线性索引。ind2sub
将线性索引转换为矩阵的行列坐标。
A = zeros(3, 3);
linear_index = sub2ind(size(A), 2, 3); % 将 (2, 3) 转换为线性索引
[row, col] = ind2sub(size(A), linear_index); % 将线性索引转换回 (2, 3)
64. accumarray
- 累加数组
accumarray
根据索引对数组进行累加,常用于统计和分组计算。
subs = [
1; 2; 4; 2; 4]; % 指定累加的索引
vals = [10; 20; 30; 40; 50]; % 要累加的值
result = accumarray(subs, vals); % 结果为 [10; 60; 0; 80]
65. pcolor
- 伪彩色图
pcolor
用于显示矩阵数据的伪彩色图。
Z = peaks;
pcolor(Z); % 显示伪彩色图
colorbar; % 添加颜色条
66. imfilter
- 图像滤波
imfilter
用于对图像进行滤波操作,通常用于图像平滑、锐化等操作。
I = imread('peppers.png');
h = fspecial('sobel'); % 创建 Sobel 滤波器
filteredI = imfilter(I, h); % 对图像应用滤波
imshow(filteredI); % 显示滤波后的图像
67. im2bw
- 转换为二值图像
im2bw
用于将灰度图像转换为二值图像(黑白图像)。不过在新版本中推荐使用 imbinarize
。
I = rgb2gray(imread('peppers.png'));
BW = im2bw(I, 0.5); % 使用阈值 0.5 转换为二值图像
imshow(BW);
68. bwarea
- 计算二值图像中白色区域的面积
bwarea
用于计算二值图像中白色像素的面积。
BW = imread('text.png'); % 加载二值图像
area = bwarea(BW); % 计算白色区域的面积
disp(area);
69. bwareafilt
- 提取二值图像中面积最大的连通区域
bwareafilt
提取二值图像中面积最大的几个连通区域,常用于目标提取。
BW = imread('text.png');
largest_region = bwareafilt(BW, 1); % 提取面积最大的区域
imshow(largest_region);
70. bwlabel
- 对二值图像中的连通区域进行标记
bwlabel
用于对二值图像中的连通区域进行标记,为每个区域分配一个唯一的标签。
BW = imread('text.png');
L = bwlabel(BW); % 对连通区域进行标记
imshow(label2rgb(L)); % 显示标记图像
71. regionprops
- 测量图像区域属性
regionprops
用于测量图像中连通区域的各种属性(如面积、边界框等)。
BW = imread('text.png');
stats = regionprops(BW, 'Area', 'BoundingBox'); % 获取区域的面积和边界框信息
disp(stats);
72. imhist
- 显示图像直方图
imhist
用于显示图像的灰度直方图。
I = rgb2gray(imread('peppers.png'));
imhist(I); % 显示灰度图像的直方图
73. histeq
- 直方图均衡化
histeq
用于对图像进行直方图均衡化,增强图像的对比度。
I = rgb2gray(imread('peppers.png'));
I_eq = histeq(I); % 对图像进行直方图均衡化
imshow(I_eq);
74. edge
- 边缘检测
edge
用于对图像进行边缘检测,可以选择不同的边缘检测算法(如 Canny、Sobel 等)。
I = rgb2gray(imread('peppers.png'));
BW = edge(I, 'canny'); % 使用 Canny 算法进行边缘检测
imshow(BW);
75. watershed
- 分水岭算法分割
watershed
用于图像分割,特别适合用于复杂区域的分割。
I = imread('coins.png');
L = watershed(I); % 对图像进行分水岭分割
imshow(label2rgb(L));
76. meshc
- 带等高线的三维网格图
meshc
用于绘制带等高线的三维网格图。
[X, Y] = meshgrid(-5:0.5:5, -5:0.5:5);
Z = X.^2 + Y.^2;
meshc(X, Y, Z); % 绘制带等高线的三维网格图
77. gradient
- 计算数值梯度
gradient
用于计算数组的数值梯度。
[X, Y] = meshgrid(-5:0.5:5, -5:0.5:5);
Z = X.^2 + Y.^2;
[dzdx, dzdy] = gradient(Z); % 计算 Z 的梯度
quiver(X, Y, dzdx, dzdy); % 绘制梯度矢量场
78. pca
- 主成分分析
pca
用于对数据进行主成分分析,常用于数据降维。
data = randn(100, 3); % 随机生成 100x3 数据
[coeff, score] = pca(data); % 对数据进行 PCA 分析
disp(coeff); % 输出主成分系数
79. polyder
- 计算多项式的导数
polyder
用于计算多项式的导数,适合求解一维函数的导数。
p = [3, 2, 1]; % 多项式 3x^2 + 2x + 1
dp = polyder(p); % 计算导数,结果为 [6, 2]
80. roots
- 求解多项式的根
roots
用于计算多项式的所有根。
p = [1, -3, 2]; % 多项式 x^2 - 3x + 2
r = roots(p); % 结果为 [2; 1]
81. polyval
- 评估多项式
polyval
用于计算多项式在特定点的值。
p = [1, -3, 2]; % 多项式 x^2 - 3x + 2
x = 1.5;
y = polyval(p, x); % 计算 p(1.5) 的值
82. deconv
- 多项式的除法
deconv
用于对两个多项式进行除法运算。
p = [1, -3, 2]; % 被除多项式
q = [1, -1]; % 除多项式
[quotient, remainder] = deconv(p, q); % 计算商和余数
83. interp2
- 二维插值
interp2
用于对二维数据进行插值。
[X, Y] = meshgrid(1:5, 1:5);
Z = X.^2 + Y.^2;
[Xq, Yq] = meshgrid(1:0.1:5, 1:0.1:5);
Zq = interp2(X, Y, Z, Xq, Yq); % 二维插值
surf(Xq, Yq, Zq); % 绘制插值后的曲面图
84. spdiags
- 创建稀疏对角矩阵
spdiags
用于生成稀疏对角矩阵,可以显著减少内存占用。
d = [1:5]'; % 对角线元素
S = spdiags(d, 0, 5, 5); % 生成 5x5 稀疏对角矩阵
disp(S);
85. sparse
- 创建稀疏矩阵
sparse
用于创建稀疏矩阵,以节省内存和加快计算速度。
A = sparse([1, 2, 3], [1, 2, 3], [10, 20, 30], 5, 5); % 创建 5x5 稀疏矩阵
disp(A);
86. spy
- 可视化稀疏矩阵
spy
用于绘制稀疏矩阵的非零元素位置。
A = sparse([1, 2, 3], [1, 2, 3], [10, 20, 30], 5, 5);
spy(A); % 可视化稀疏矩阵
87. find
- 查
找满足条件的数组索引
find
返回数组中满足条件的元素索引。
A = [5, 10, 15, 20];
indices = find(A > 10); % 找到大于 10 的元素索引
disp(indices); % 结果为 [3, 4]
88. diff
- 计算相邻元素的差分
diff
用于计算数组中相邻元素的差,通常用于数值微分。
A = [1, 3, 6, 10];
differences = diff(A); % 结果为 [2, 3, 4]
89. cumsum
- 计算累积和
cumsum
用于计算数组的累积和。
A = [1, 2, 3, 4];
cum_sum = cumsum(A); % 结果为 [1, 3, 6, 10]
90. cumprod
- 计算累积积
cumprod
用于计算数组的累积积。
A = [1, 2, 3, 4];
cum_product = cumprod(A); % 结果为 [1, 2, 6, 24]
91. flipud
- 上下翻转矩阵
flipud
用于将矩阵沿垂直方向(上下)翻转。
A = [1, 2; 3, 4];
B = flipud(A); % 结果为 [3, 4; 1, 2]
92. fliplr
- 左右翻转矩阵
fliplr
用于将矩阵沿水平方向(左右)翻转。
A = [1, 2; 3, 4];
B = fliplr(A); % 结果为 [2, 1; 4, 3]
93. repmat
- 重复数组
repmat
用于将数组重复指定的次数,生成更大的数组。
A = [1, 2];
B = repmat(A, 2, 3); % 结果为 2x3 的矩阵:[1, 2, 1, 2, 1, 2]
94. padarray
- 数组填充
padarray
用于对数组进行边界填充,常用于图像处理。
A = [1, 2; 3, 4];
B = padarray(A, [1, 1], 0); % 使用 0 填充矩阵的边界
95. circshift
- 循环移位
circshift
用于将数组的元素进行循环移位。
A = [1, 2, 3, 4];
B = circshift(A, 2); % 循环右移 2 个位置,结果为 [3, 4, 1, 2]
96. fftshift
- 移动 FFT 结果的零频分量
fftshift
用于将快速傅里叶变换结果中的零频分量移到中心位置。
Y = fft(eye(8));
Y_shifted = fftshift(Y); % 移动 FFT 结果的零频分量
97. unwrap
- 角度展开
unwrap
用于展开角度序列,避免跳变现象,常用于相位分析。
angles = [0, pi, -pi, pi, -pi];
unwrapped = unwrap(angles); % 展开角度,结果为 [0, pi, 2*pi, 3*pi, 4*pi]
98. findpeaks
- 寻找数据中的峰值
findpeaks
用于寻找数据中的峰值位置和大小,常用于信号处理。
data = [1, 3, 2, 4, 3, 5];
[pks, locs] = findpeaks(data); % 找到峰值及其位置
99. detrend
- 去除数据中的趋势
detrend
用于去除数据中的线性趋势,常用于信号预处理。
t = 0:0.1:10;
signal = t + sin(t); % 包含线性趋势的信号
detrended_signal = detrend(signal); % 去除趋势
100. griddata
- 插值散点数据
griddata
用于在不规则的散点数据上进行插值。
x = rand(10, 1);
y = rand(10, 1);
z = sin(x) + cos(y);
[Xq, Yq] = meshgrid(0:0.1:1, 0:0.1:1);
Zq = griddata(x, y, z, Xq, Yq); % 插值散点数据
mesh(Xq, Yq, Zq); % 显示插值结果
以上涵盖了 MATLAB 中 100 个常用的函数和操作。这些函数几乎涉及 MATLAB 中的数据处理、矩阵运算、图像处理、信号处理、可视化等多个方面,是进行 MATLAB 编程的重要工具。希望这些内容能对你在 MATLAB 中的学习和项目开发有所帮助!