MATLAB编程技巧与常见问题解析

1、编程中的一个重要概念是将一个命令的输出用作另一个命令的输入。已知代码使用方括号将小鼠的年龄放入一个名为 ages 的数组中,然后通过测试年龄是否小于 70 天,将该变量转换为逻辑数组,代码如下:ages = [mouse.age]; ages = ages<70; 请使用一行代码执行相同的操作。

ages = [mouse.age] < 70;

2、判断以下三行代码是否会产生不同的结果,并解释原因。同样,先思考答案,然后在MATLAB中进行验证。代码分别为:0:.1:(2>1); (0:.1:2)>1; 0:.1:2>1

这三行代码会产生不同的结果。

  1. 第一行 0:.1:(2>1) ,因为 2>1 结果为逻辑真即 1 ,所以是从 0 0.1 为步长到 1 生成向量;
  2. 第二行 (0:.1:2)>1 是先生成从 0 2 0.1 为步长的向量,再将向量中每个元素与 1 比较,得到逻辑向量;
  3. 第三行 0:.1:2>1 先计算 2>1 为逻辑真即 1 ,再从 0 0.1 为步长到 1 生成向量,虽然形式上和第一行计算过程有区别,但结果相同。不过和第二行结果不同。

3、使用冒号运算符和方括号,创建一个从 1 数到 10 再降回 1 的数组,确保 10 不重复。然后给数组中的所有元素加 4。最后测试每个元素是否等于 8。

  1. 创建数组: arr = [1:10 9:-1:1];
  2. 给数组元素加 4: arr = arr + 4;
  3. 测试每个元素是否等于 8: result = arr == 8;

4、以下两行代码有什么区别?clear a; clear a*

clear a用于清除名为a的变量;clear a*用于清除所有以a开头的变量。

5、已知存在小鼠结构体,结构体中有一个字段为 numElectrodes 表示小鼠的电极数量,编写一行代码来计算两只小鼠的电极总数(求和的 MATLAB 函数是 sum)。

sum([mouse(1).numElectrodes mouse(2).numElectrodes])

6、初始化一个变量,使其为一个 50×40 的零矩阵。然后,对于第二维的前 20 个元素,将第一维的前 10 个元素的值设为 10,最后 5 个元素的值设为 5。

在 MATLAB 中可以按以下步骤实现:

  1. 首先,使用 zeros 函数初始化一个 50×40 的零矩阵。
  2. 然后,使用索引操作将第二维的前 20 个元素中,第一维的前 10 个元素赋值为 10,最后 5 个元素赋值为 5。

代码如下:

mat = zeros(50, 40);
mat(1:10, 1:20) = 10;
mat(46:50, 1:20) = 5;

上述代码首先创建了名为 mat 的 50×40 零矩阵,接着对矩阵的指定部分进行赋值。

7、将以下数学表达式转换为 MATLAB 代码。(a) 4 + 5 / 4;(b) 19 × 48 - 4;(c) 4 / 3 + 8;(d) 4 + 3 / 8;(e) (-4.5 + 39.2) / (17.26 × 3 - 4)

以下是对给定文本内容调整为 Markdown 格式的输出:


给定的表达式:

(a) 4 + 5/4
(b) 19 * 48 - 4
(c) 4/3 + 8
(d) 4 + 3/8
(e) (-4.5 + 39.2) / (17.26 * 3 - 4)

8、以下几行代码有什么区别?n = zeros(3,5)/0; n = 3+ones(3,5)/0; n = nan(3,5);

`n = zeros(3,5)/0`:先创建一个3行5列的全零矩阵,再将其除以0,结果矩阵的每个元素都是`NaN`。  
`n = 3+ones(3,5)/0`:先创建一个3行5列的全1矩阵,将其除以0得到每个元素为`NaN`的矩阵,再加3,结果矩阵每个元素依然是`NaN`。  
`n = nan(3,5)`:直接创建一个3行5列、元素全为`NaN`的矩阵。  

三者结果矩阵元素都为`NaN`,但计算过程不同。

9、以下哪些变量名合法,哪些不合法?对于不合法的,如何修正这些名称?对于合法的,这些名称是否适合使用,为什么?变量名有:data4analysis、7mac11、iHeartData!、j、data - set、data set、filter、thisOldVariable、variablesRgr8、this_is_a_variable_i_will_use_for_analysis_results、polyfit

# 合法的变量名及分析

1. **data4analysis**:合法,是好名字,能体现用于数据分析的数据,有一定含义。
2. **j**:合法,但不是好名字,缺乏明确含义,尤其是在长脚本中使用易造成混淆。
3. **thisOldVariable**:合法,有一定描述性,但含义不够精准,不过比单字母变量好。
4. **variablesRgr8**:合法,但表述不直观,难以理解变量内容。
5. **this_is_a_variable_i_will
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值