函数心得

本文介绍了函数编程中的注意事项,如避免在函数内定义其他函数、处理递归问题的方法及使用三元运算符来简化程序等。同时分享了如何通过观察规律解决复杂问题的心得体会。

注意事项:

1.自己写的函数内部可以调用其它函数,但不能在一个函数内部去定义另一个函数。

2.如果自己写的函数与系统中已有的函数功能一样时,则自己写的起作用。

3.写递归函数,关键是发现递归式和找到递归边界。若递归规律是后面的例如n和n-1的关系,则递归边界应找前面的小数那种显而易见的关系(即从后往前推)。

4.对于函数体内只考虑两种情况的,可以用三元运算符简化程序。

eg: 求n!

int fac (int x)                                                       int fac (int x)

{                                                                      {

 if (x==1)      return 1;                                          return x ==0? 1: x*fac(x-1);

else              return x*fac(x-1);                          }

 }

心得体会:

1.注意挖掘题目给的隐含的解题思路,对于有规律的表达式,注意寻求规律,要学会将一个整体的大问题分解成一部分,一部分的小问题,不要禁锢住自己的思想,要学会一步一步的去解决问题。

2.不同的题型学会去运用不同的表达方法,牢记各种语句相对应的适用情况

eg:像简单算术表达式求值。当运算符为不同情况时,对应于不同的表达式。所以可以在函数内部用switch语句描述不同的加减乘除情况。





### MATLAB 调用函数示例 MATLAB 中的函数可以通过多种方式实现调用,下面给出几个具体的例子。 #### 示例 1:简单函数调用 假设我们需要定义一个函数 `addNumbers` 来计算两个数的和,并在主程序中调用它: ```matlab % 定义 addNumbers 函数 function sum = addNumbers(a, b) sum = a + b; end % 主程序调用 addNumbers 函数 result = addNumbers(5, 7); disp(result); % 显示结果为 12 ``` 在这个例子中,`addNumbers` 是一个简单的加法函数[^1]。通过传入参数 `a` 和 `b`,可以得到两者的和并返回给变量 `sum`。 --- #### 示例 2:带循环的复杂函数调用 如果需要在一个循环中多次调用某个函数,比如求一系列数值的平方根,则可以这样操作: ```matlab % 定义 squareRoot 函数 function root = squareRoot(num) root = sqrt(num); end % 使用 for 循环调用 squareRoot 函数 for i = 1:5 result(i) = squareRoot(i * 10); end disp(result); % 显示数组 [3.1623 4.4721 5.4772 6.3246 7.0711] ``` 在此案例中,`squareRoot` 计算输入值的平方根,并通过循环依次处理多个数据点[^1]。 --- #### 示例 3:嵌套函数调用 当一个函数内部又调用了另一个自定义函数时,称为嵌套调用。以下是具体实现方法之一——利用独立 M 文件的方式完成嵌套调用。 ##### 子函数文件 `gcd.m` ```matlab function output = gcd(a, b) while b ~= 0 temp = b; b = mod(a, b); a = temp; end output = a; end ``` ##### 主函数文件 `mainFunction.m` ```matlab x = 54; y = 24; % 调用 gcd 函数 result = gcd(x, y); disp(result); % 输出结果为 6 ``` 这种情况下,`gcd` 函数被保存为单独的一个 `.m` 文件,而主程序则负责调用该函数来获取最终的结果[^2]。 --- #### 示例 4:子函数形式下的嵌套调用 另一种常见的做法是在单个 M 文件内定义多个子函数。例如: ```matlab function [] = mainProgram() x = 54; y = 24; % 调用子函数 gcdSub result = gcdSub(x, y); disp(result); % 输出结果为 6 end function output = gcdSub(a, b) while b ~= 0 temp = b; b = mod(a, b); a = temp; end output = a; end ``` 在这里,`gcdSub` 是作为 `mainProgram` 的子函数存在,两者共享同一份代码文件。 --- #### 示例 5:实际工程应用中的综合调用 考虑一个通信系统的仿真场景,其中涉及 QAM 调制与解调过程。按照惯例,每种功能都应分别设计成独立的小型模块化函数,随后由顶层脚本统一管理这些组件之间的交互关系。 假设有以下几个核心部分: 1. **QAM 调制** 2. **QAM 解调** 3. **二进制序列转换** 对应的伪代码可能如下所示: ```matlab % 创建顶层测试脚本 testQAMSystem.m binaryData = randi([0, 1], 1, 8); % 随机生成比特流 modulatedSignal = qamModulate(binaryData); % 调用 QAM 调制器 demodulatedData = qamDemodulate(modulatedSignal); % 调用 QAM 解调器 if isequal(binaryData, demodulatedData) disp('成功恢复原始信号'); else disp('失败'); end % 单独保存各子函数至不同 .m 文件 function outSig = qamModulate(inBits) ... end function outBits = qamDemodulate(inSig) ... end ``` 注意,为了确保所有依赖项都能正常加载运行,需提前配置好工作目录路径[^3]。 --- ### 实验总结与心得体会 通过对以上实例的学习实践可知,合理运用 MATLAB 提供的功能可以帮助简化编程流程、提升效率。特别是针对较为复杂的工程项目而言,采用分层架构的思想尤为重要;即将整体任务拆分为若干相对独立却又彼此关联的任务单元(即各个小规模函数),从而便于后续调试优化以及扩展升级。 此外还需强调一点,无论采取何种策略实施函数间协作机制,始终要遵循良好的命名习惯及文档记录原则,这不仅有助于自己日后回顾理解已有成果,也能方便团队成员之间交流沟通。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值