欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > MATLAB—从入门到精通的第二天

MATLAB—从入门到精通的第二天

2025/3/13 18:19:35 来源:https://blog.csdn.net/m0_69824302/article/details/146105525  浏览:    关键词:MATLAB—从入门到精通的第二天

在第一天的学习中,我们掌握了 MATLAB 的安装配置、基础语法、变量管理和运算符的使用。本文将深入讲解 控制结构(嵌套 ifswitch循环类型 和 向量操作,帮助读者进一步掌握 MATLAB 的核心编程技能。


1. 条件语句进阶

1.1 嵌套 if 语句

嵌套 if 语句允许在一个条件分支中嵌入另一个条件判断,适用于处理多层级逻辑。

语法
if condition1% 当 condition1 为 true 时执行if condition2% 当 condition1 和 condition2 同时为 true 时执行end
end
示例

判断一个数是否为 正偶数

x = 10;
if x > 0if mod(x, 2) == 0disp('正偶数');elsedisp('正奇数');end
elsedisp('非正数');
end
注意事项
  • 避免过度嵌套(一般不超过 3 层),否则代码可读性会降低。

  • 使用逻辑运算符(&&||)简化多层条件:

    if x > 0 && mod(x, 2) == 0disp('正偶数');
    end

1.2 switch 语句

switch 语句用于根据表达式的值执行不同的代码块,适合替代多层 if...elseif 结构。

语法
switch expressioncase value1% 当 expression == value1 时执行case value2% 当 expression == value2 时执行otherwise% 当无匹配 case 时执行
end
示例

根据星期数输出对应的名称:

day = 3;
switch daycase 1disp('星期一');case 2disp('星期二');case 3disp('星期三');otherwisedisp('无效输入');
end
% 输出:星期三
case 的多值匹配

一个 case 可以匹配多个值(使用元胞数组):

color = 'red';
switch colorcase {'red', 'yellow'}disp('暖色');case {'blue', 'green'}disp('冷色');
end
% 输出:暖色

1.3 嵌套 switch 语句

switch 语句内部可以嵌套另一个 switch,但实际开发中较少使用(优先考虑代码结构优化)。

示例

根据用户角色和权限显示菜单:

role = 'admin';
permission = 'write';switch rolecase 'admin'switch permissioncase 'read'disp('显示管理员只读菜单');case 'write'disp('显示管理员编辑菜单');endcase 'user'disp('显示用户菜单');
end
% 输出:显示管理员编辑菜单

2. 循环结构

2.1 while 循环

while 循环在条件为真时重复执行代码块,适合未知迭代次数的场景。

语法
while condition% 循环体
end
示例

计算 1 到 100 的和:

sum = 0;
i = 1;
while i <= 100sum = sum + i;i = i + 1;
end
disp(sum);  % 输出:5050
流程图
开始 → 检查条件 → 条件为真 → 执行循环体 → 更新条件 → 重复检查↓条件为假 → 结束循环

2.2 for 循环

for 循环用于遍历数组或指定次数的迭代,适合已知范围的循环。

语法
for index = start:step:end% 循环体
end
示例

遍历数组元素并计算平方:

A = [2, 4, 6, 8];
for k = 1:length(A)A(k) = A(k)^2;
end
disp(A);  % 输出:[4, 16, 36, 64]
遍历矩阵

按列遍历矩阵:

matrix = [1 2; 3 4];
for col = matrixdisp(col);
end
% 输出:
% 1
% 3
% 2
% 4

2.3 嵌套循环

嵌套循环用于处理多维数据(如矩阵运算)。

示例

生成乘法表:

for i = 1:9for j = 1:ifprintf('%d*%d=%d\t', j, i, i*j);endfprintf('\n');
end
输出
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
...

2.4 break 与 continue

  • break:立即终止当前循环,跳转到循环外。

  • continue:跳过当前迭代,进入下一次循环。

示例

查找第一个能被 7 整除的数:

for num = 100:200if mod(num, 7) ~= 0continue;  % 跳过非整除情况enddisp(['找到:', num2str(num)]);break;         % 找到后退出循环
end
% 输出:找到:105

3. 向量操作

3.1 向量创建

向量是 MATLAB 的核心数据类型,分为 行向量 和 列向量

方法示例说明
直接输入v = [1 2 3 4]行向量
冒号运算符v = 1:2:10生成 [1,3,5,7,9]
linspace 函数v = linspace(0,1,5)生成 0 到 1 的 5 等分点
zeros/onesv = zeros(1,5)零向量 [0,0,0,0,0]

3.2 向量运算

加法与减法

向量维度必须一致:

A = [1 2 3];
B = [4 5 6];
C = A + B;  % 输出:[5 7 9]
D = A - B;  % 输出:[-3 -3 -3]
标量乘法
v = [1 2 3];
result = 2 * v;  % 输出:[2 4 6]
转置向量

使用单引号 ' 或 transpose() 函数:

row = [1 2 3];
col = row';       % 转置为列向量 [1; 2; 3]

3.3 向量高级操作

追加向量

使用方括号 [] 或 cat() 函数:

v1 = [1 2];
v2 = [3 4];
v3 = [v1 v2];        % 输出:[1 2 3 4]
v4 = cat(2, v1, v2); % 水平拼接(同 [v1 v2])
向量模长

计算向量的欧几里得范数:

v = [3 4];
magnitude = norm(v);  % 输出:5
向量点积

使用 dot() 函数或运算符 .* 配合 sum()

A = [1 2 3];
B = [4 5 6];
dot_product = dot(A, B);       % 输出:32
dot_product_manual = sum(A .* B);  % 输出:32

4. 应用案例

4.1 斐波那契数列生成

使用 for 循环生成前 10 项:

fib = zeros(1, 10);
fib(1:2) = [1 1];
for i = 3:10fib(i) = fib(i-1) + fib(i-2);
end
disp(fib);  % 输出:[1 1 2 3 5 8 13 21 34 55]

4.2 向量化计算

避免显式循环,提升代码效率:

% 计算向量元素的平方和
v = 1:100;
sum_squares = sum(v.^2);  % 输出:338350

5. 总结与练习

5.1 核心知识点

主题关键内容
嵌套 if多层级逻辑判断,避免过度嵌套
switch多分支条件匹配,支持多值 case
while/for循环控制,break 与 continue 的使用
向量操作创建、运算、模长与点积计算

5.2 练习题目

  1. 编写一个 switch 语句,根据月份返回季节(如 1-3 月为春季)。

  2. 使用嵌套循环生成一个 5x5 的矩阵,其中对角线元素为 1,其余为 0。

  3. 计算两个向量的夹角(公式:θ = arccos( (A·B) / (||A|| ||B||) ))。


6. 下一步学习建议

  1. 矩阵操作:学习矩阵乘法、逆矩阵和特征值计算。

  2. 函数编写:掌握函数参数传递与返回值处理。

  3. 数据可视化:使用 plot() 和 scatter() 绘制二维/三维图形。

通过实践巩固知识,逐步掌握 MATLAB 在科学计算和工程分析中的强大能力!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词