MATLAB基础操作与应用详解
立即解锁
发布时间: 2025-09-05 02:00:29 阅读量: 7 订阅数: 30 AIGC 


MATLAB偏微分方程工程应用
# MATLAB 基础操作与应用详解
## 1. 软件基础操作
### 1.1 随机数生成
在 MATLAB 中,`rng default` 可用于设置随机数生成器的初始状态。以下是相关代码示例:
```matlab
rng default % for a starting generator settings
>> a=rand(2,4) % 1st use of the rand, seed random number values
a =
0.8147 0.1270 0.6324 0.2785
0.9058 0.9134 0.0975 0.5469
>> a=rand(2,4) % reuse rand yields new random number values
a =
0.9575 0.1576 0.9572 0.8003
0.9649 0.9706 0.4854 0.1419
rng default % restoring a starting generator settings
>> a=rand(2,4)%reuse rand yields the initial random number values
a =
0.8147 0.1270 0.6324 0.2785
0.9058 0.9134 0.0975 0.5469
```
从上述代码可以看出,每次使用 `rand` 函数时,如果不重置随机数生成器,会得到不同的随机数;而使用 `rng default` 重置后,再次调用 `rand` 会得到与初始相同的随机数。
### 1.2 字符串操作
在 MATLAB 中,字符串是由字符和数字组成的数组,用单引号括起来。以下是一些字符串操作的示例:
```matlab
>>str1=‘Engineering is the design and manufacturing things using science and mathematics’ % generates string vector str1
str1 =
‘Engineering is the design and manufacturing things using science and mathematics’
>>str2=‘Bearing’ % generates the 7-element string vector str2
str2 =
‘Bearing’
>>length(str2)% the str2 length is 7, the ‘ signs are not counted
ans =
7
```
可以对字符串中的单个字符进行操作,就像操作向量元素一样。例如:
```matlab
>>str2(6) % ‘n’ is the 6th element of str2
ans =
‘n’
>>str2(3:5) % ‘a’, ‘r’ and ‘i’ are the 3rd …5th elements of str2
ans =
‘ari’
>>str2([7 2:4])%’g’,’e’,’a’ and ‘n’ are the 7th, 2nd…5th elements
ans =
‘gear’
```
若要显示不带引号的字符串,可以使用 `disp` 命令:
```matlab
>>disp(str1)
Engineering is design and manufacturing things using science and mathematics
>>disp(str2([7 2:4]))
gear
```
在创建字符串矩阵时,每行字符串的长度必须相同。若长度不同,可添加空格来实现长度一致。例如:
```matlab
>> List_of_names=[‘Gear’;’Piston’;’Bolt’;’Crankshaft’]
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
```
此错误表明行中字符串长度不一致。为修正数组,需在较短的字符串后添加空格:
```matlab
>>List_of_Names=[‘Gear ‘;’Piston ‘;’Bolt ‘;’Crankshaft’];
>> disp(List_of_Names)
Gear
Piston
Bolt
Crankshaft
```
为避免手动添加空格的繁琐,可使用 `char` 或 `strvcat` 命令。
### 1.3 表格显示
#### 1.3.1 `disp` 命令显示表格
以显示齿轮齿高和厚度数据为例,代码如下:
```matlab
>> M=[10 1.062 1.564;20 1.031 1.569;30 1.021 1.570;40 1.015 1.5704] %matrix M with data from Table 2.3
M =
10.0000 1.0620 1.5640
20.0000 1.0310 1.5690
30.0000 1.0210 1.5700
40.0000 1.0150 1.5704
>> disp(‘ Table’),disp(‘ N H, mm S, mm’),disp(M)
Table
N H, mm S, mm
10.0000 1.0620 1.5640
20.0000 1.0310 1.5690
30.0000 1.0210 1.5700
40.0000 1.0150 1.5704
```
前两个 `disp` 命令显示表格标题,第三个输出 `M` 数组。需注意,所有 `disp` 命令必须写在同一命令行,表格才能按预期显示。
#### 1.3.2 `fprintf` 命令显示表格
`fprintf` 命令可对输出数字进行格式化。在上述示例中,可将 `N` 值显示为无小数位,`H` 和 `S` 显示为三位小数。代码如下:
```matlab
>> fprintf(‘ Table\n N H,mm S,mm\n’),fprintf(‘%3.0f %6.3f %6.3f\n’, M’)
Table
N H,mm S,mm
10 1.062 1.564
20 1.031 1.569
30 1.021 1.570
40 1.015 1.570
```
第一个 `fprintf` 命令显示表格标题的两行,第二个显示 `M` 数组的数字。同样,两个 `fprintf` 命令必须写在同一命令行,表格才能按预期显示。
### 1.4 应用示例
#### 1.4.1 长方体晶格单元体积
对于面心长方体晶格单元,可通过以下表达式定义体积:
$V = |\vec{a_1} \cdot (\vec{a_2} \times \vec{a_3})|$
其中,$\vec{a_1}$、$\vec{a_2}$ 和 $\vec{a_3}$ 是三维向量,每个 $a$ 是晶格常数,$|\cdot|$ 和 $\times$ 分别表示点积和叉积。
问题:当 $\vec{a_1} = (0.5\vec{j} + 0.5\vec{k})a$,$\vec{a_2} = (0.5\vec{i} + 0.5\vec{k})a$,$\vec{a_3} = (0.5\vec{j} + 0.5\vec{k})a$,$a = 3.567 Å$(金刚石)时,计算单位晶胞体积 $V$。使用 `dot` 和 `cross` 命令,并使用 `fprintf` 命令显示向量和体积,每个数字保留三位小数。
解决该问题的命令如下:
```matlab
>>a=3.567; % assigns 3.567 to a
>>a1=[0 0.5 0.5]*a; % generates tree-element vector a1
>>a2=[0.5 0 0.5]*a; % generates tree-element vector a2
>>a3=[0.5 0.5 0]*a; % generates tree-element vector a3
>>v=dot(a1,cross(a2,a3)); % calculates volume
>>a123=[a1;a2;a3]; % generates matrix with a1, a2 a3 rows
>>A=[(1:3)’ a123]; % adds row with numbers 1 2 3
>>fprintf(‘a%1d=[%6.3f %6.3f %6.3f]\n’,A’)% outputs a1,a2,a3
a1=[ 0.000 1.784 1.784]
a2=[ 1.784 0.000 1.784]
a3=[ 1.784 1.784 0.000]
>>fprintf(‘Volume=%8.4f Angstrom^3\n’,v) % outputs volume
Volume= 11.3462 Angstrom^3
```
这些命令的操作步骤如下:
1. 前四个命令输入 $a$ 的值并生成三个三维向量 `a1`、`a2` 和 `a3`。
2. 第五个命令使用 `dot` 和 `cross` 命令计算体积 $V$。
3. 最后四个命令使用两个 `fprintf` 命令显示结果:
- 生成矩阵 `a123`,将 `a1`、`a2` 和 `a3` 作为矩阵行。
- 生成矩阵 `A`,将序列号 1、2 和 3 与矩阵 `a123` 组合。
- 在第一个 `fprintf` 命令中,将 `A` 的第一行值定义为整数,`a1`、`a2`、`a3` 的值定义为保留三位小数的定点数;由于 `fprintf` 命令将矩阵行显示为列,因此对矩阵 `A` 进行转置。
- 第二个 `fprintf` 命令显示文本和体积 $V$ 的值。
#### 1.4.2 包含字符串和数字的表格
已知一些技术/工业材料的线性温度膨胀系数 $\alpha$ 数据,如下表所示:
| 材料 | $\alpha \cdot 10^{-6}, m/(m K)$ |
| ---- | ---- |
| Aluminum | 23 |
| Copper | 16 |
| Polyethylene | 108 |
| Titanium | 0.5 |
| Polypropyle
0
0
复制全文
相关推荐









