复数与MATLAB基础:从理论到实践的全面指南
一、复数的表示与运算
1.1 复数的三种表示形式
复数在信号与系统领域中具有重要地位,尽管现在有计算器和如MATLAB这样的软件可以处理复数,但手动处理复数的能力仍很关键。复数有三种常见的表示形式:
-
矩形形式
:(z = x + jy),其中(j = \sqrt{-1}),(x)是实部,即(x = Re(z));(y)是虚部,即(y = Im(z))。
-
极坐标形式
:(z = r\angle\theta),其中(r = \sqrt{x^2 + y^2}),(\theta = \tan^{-1}(\frac{y}{x}))。在从矩形形式转换为极坐标形式时,需要根据(x)和(y)的正负来确定(\theta)的正确值,具体有四种情况:
- 第一象限:(z = x + jy),(\theta = \tan^{-1}(\frac{y}{x}))
- 第二象限:(z = -x + jy),(\theta = 180^{\circ} - \tan^{-1}(\frac{y}{x}))
- 第三象限:(z = -x - jy),(\theta = 180^{\circ} + \tan^{-1}(\frac{y}{x}))
- 第四象限:(z = x - jy),(\theta = 360^{\circ} - \tan^{-1}(\frac{y}{x}))
-
指数形式
:(z = re^{j\theta}),与极坐标形式类似,使用相同的模(r)和角度(\theta)。
三种表示形式总结如下表:
| 表示形式 | 公式 |
| — | — |
| 矩形形式 | (z = x + jy),(x = r\cos\theta),(y = r\sin\theta) |
| 极坐标形式 | (z = r\angle\theta),(r = \sqrt{x^2 + y^2}),(\theta = \tan^{-1}(\frac{y}{x})) |
| 指数形式 | (z = re^{j\theta}) |
1.2 复数的数学运算
- 相等条件 :两个复数(z_1 = x_1 + jy_1)和(z_2 = x_2 + jy_2)相等,当且仅当它们的实部和虚部分别相等,即(x_1 = x_2)且(y_1 = y_2)。
- 共轭复数 :复数(z = x + jy)的共轭复数为(z^* = x - jy = r\angle - \theta = re^{-j\theta}),通过将(j)替换为(-j)得到。
- 加减运算 :在矩形形式下进行复数的加减运算更为方便。(z_1 + z_2 = (x_1 + x_2) + j(y_1 + y_2)),(z_1 - z_2 = (x_1 - x_2) + j(y_1 - y_2))。
-
乘除运算
:复数的乘积和商在极坐标或指数形式下计算更简便。
- 乘积:(z_1z_2 = r_1r_2\angle(\theta_1 + \theta_2)),也可以在矩形形式下计算:(z_1z_2 = (x_1 + jy_1)(x_2 + jy_2) = (x_1x_2 - y_1y_2) + j(x_1y_2 + x_2y_1))。
- 商:(\frac{z_1}{z_2} = \frac{r_1}{r_2}\angle(\theta_1 - \theta_2)),在矩形形式下,需要通过乘以分母的共轭复数来进行分母有理化:(\frac{z_1}{z_2} = \frac{(x_1 + jy_1)(x_2 - jy_2)}{(x_2 + jy_2)(x_2 - jy_2)} = \frac{(x_1x_2 + y_1y_2) + j(x_1y_2 - x_2y_1)}{x_2^2 + y_2^2})。
1.3 欧拉公式
欧拉公式是复变函数中的重要结果,通过(e^x)、(\cos\theta)和(\sin\theta)的级数展开推导得出。
- 已知(e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \frac{x^4}{4!} + \cdots),将(x)替换为(j\theta)得到(e^{j\theta} = 1 + j\theta - \frac{\theta^2}{2!} - j\frac{\theta^3}{3!} + \frac{\theta^4}{4!} + \cdots)。
- 又因为(\cos\theta = 1 - \frac{\theta^2}{2!} + \frac{\theta^4}{4!} - \cdots),(\sin\theta = \theta - \frac{\theta^3}{3!} + \frac{\theta^5}{5!} - \cdots),所以(\cos\theta + j\sin\theta = 1 + j\theta - \frac{\theta^2}{2!} - j\frac{\theta^3}{3!} + \frac{\theta^4}{4!} + \cdots)。
- 由此可得欧拉公式:(e^{j\theta} = \cos\theta + j\sin\theta)。
基于欧拉公式,还可以得到以下有用的恒等式:
- (\cos\theta = \frac{e^{j\theta} + e^{-j\theta}}{2})
- (\sin\theta = \frac{e^{j\theta} - e^{-j\theta}}{2j})
1.4 复数运算示例
示例B.1
:计算以下复数
-
(a)
(z_1 = \frac{(2 - j3)(4 + j)}{(1 - j6)(2 + j)})
-
方法1(矩形形式)
:
设(z_3 = 2 - j3),(z_4 = 4 + j),(z_5 = (1 - j6)^
),(z_6 = 2 + j)。
(z_3z_4 = (2 - j3)(4 + j) = 8 + 2j - 12j - 3j^2 = 11 - 10j)
(z_5z_6 = (1 + j6)(2 + j) = 2 + j + 12j + 6j^2 = -4 + 13j)
(z_1 = \frac{11 - 10j}{-4 + 13j}),分子分母同时乘以(-4 - 13j)进行分母有理化:
[
\begin{align
}
z_1&=\frac{(11 - 10j)(-4 - 13j)}{(-4 + 13j)(-4 - 13j)}\
&=\frac{-44 - 143j + 40j + 130j^2}{16 + 169}\
&=\frac{-174 - 103j}{185}\
&=-0.9405 - 0.5568j\
&= 1.092\angle - 150.94^{\circ}
\end{align
}
]
-
方法2(极坐标形式)
:
(z_3 = 2 - j3 = \sqrt{2^2 + (-3)^2}\angle\tan^{-1}(\frac{-3}{2}) = 3.606\angle - 56.31^{\circ})
(z_4 = 4 + j = \sqrt{4^2 + 1^2}\angle\tan^{-1}(\frac{1}{4}) = 4.123\angle 14.04^{\circ})
(z_5 = (1 - j6)^
= 1 + j6 = \sqrt{1^2 + 6^2}\angle\tan^{-1}(\frac{6}{1}) = 6.083\angle 80.54^{\circ})
(z_6 = 2 + j = \sqrt{2^2 + 1^2}\angle\tan^{-1}(\frac{1}{2}) = 2.236\angle 26.57^{\circ})
(z_1 = \frac{z_3z_4}{z_5z_6} = \frac{3.606\angle - 56.31^{\circ} \times 4.123\angle 14.04^{\circ}}{6.083\angle 80.54^{\circ} \times 2.236\angle 26.57^{\circ}} = 1.092\angle - 150.94^{\circ})
-
(b)
(z_2 = \frac{4\angle 30^{\circ}}{1 + j2} + e^{j\frac{\pi}{6}})
设(z_7 = 4\angle 30^{\circ} = 4(\cos30^{\circ} + j\sin30^{\circ}) = 3.464 + 2j)
(z_8 = 1 + j2)
(z_9 = e^{j\frac{\pi}{6}} = \cos\frac{\pi}{6} + j\sin\frac{\pi}{6} = 0.866 + 0.5j)
(\frac{z_7}{z_8} = \frac{3.464 + 2j}{1 + j2}),分子分母同时乘以(1 - j2)进行分母有理化:
[
\begin{align }
\frac{z_7}{z_8}&=\frac{(3.464 + 2j)(1 - j2)}{(1 + j2)(1 - j2)}\
&=\frac{3.464 - 6.928j + 2j - 4j^2}{1 + 4}\
&=\frac{7.464 - 4.928j}{5}\
&= 1.493 - 0.986j
\end{align }
]
(z_2 = \frac{z_7}{z_8} + z_9 = (1.493 - 0.986j) + (0.866 + 0.5j) = 2.359 - 0.486j = 2.409\angle - 11.54^{\circ})
练习问题B.1
:计算以下复数
-
(a)
(\frac{j^3}{2 + j} - \frac{1}{2 - j})
-
(b)
(6\angle 30^{\circ} + j5 - 3 + e^{j45^{\circ}})
答案:(a) (0.24 + j0.32),(b) (2.03 + j8.707)
二、MATLAB基础与应用
2.1 MATLAB基础操作
MATLAB是一款强大的计算工具,可用于数值分析、信号处理和科学可视化等任务。以下是MATLAB的一些基础操作:
-
基本运算
:通过代数运算符进行基本的数学运算,如加法((a + b))、除法((a/b) 或 (a\backslash b))、乘法((a
b))、幂运算((a^b))和减法((a - b))。
-
使用示例
*:
>> a = 2; b = 4; c = -6;
>> dat = b^2 - 4*a*c
dat =
64
>> e = sqrt(dat)/10
e =
0.8000
-
数学函数
:除了基本运算,还可以使用各种数学函数,如
abs(x)、acos(x)、sin(x)等。可以通过help命令获取函数的使用帮助,例如help log2。
2.2 向量与矩阵操作
MATLAB可以方便地处理向量和矩阵。
-
向量定义
:例如,
a = [-1 3 6 10 8 11 14];
定义了一个行向量。
-
矩阵定义
:可以通过以下方式定义一个3x3矩阵:
>> A = [1 2 3; 4 5 6; 7 8 9];
-
矩阵运算
:除了基本的算术运算,还可以进行矩阵的转置(
A')、求行列式(det(A))、求逆(inv(A))、求特征值(eig(A))等操作。
>> B = A';
>> C = A + B;
>> D = A^3 * B;
>> e = [1 2; 3 4];
>> f = det(e);
>> g = inv(e);
>> H = eig(g);
2.3 使用MATLAB绘图
2.3.1 二维绘图
使用
plot
命令进行二维绘图,需要提供两个长度相同的向量作为参数。
>> x = 0:pi/100:5*pi;
>> y = 10*sin(2*pi*x);
>> plot(x, y);
还可以通过指定颜色和线条类型来绘制多个图形,例如:
>> plot(x1, y1, 'r', x2, y2, 'b', x3, y3, '--');
2.3.2 对数缩放绘图
可以使用
loglog
、
semilogx
和
semilogy
进行对数缩放绘图。
2.3.3 三维绘图
使用
mesh
和
meshgrid
函数进行三维绘图。
>> xx = -1:.1:1;
>> yy = xx;
>> [x, y] = meshgrid(xx, yy);
>> z = x.*exp(-x.^2 - y.^2);
>> mesh(z);
2.4 MATLAB编程
可以使用MATLAB创建自己的程序,通过创建M文件来执行一系列语句。
-
创建M文件
:在命令窗口中,点击
File/New/M-files
打开新文件,输入程序并保存为以
.m
为扩展名的文件。
-
示例M文件(example1.m)
:
x = 0:pi/100:5*pi;
y = 10*sin(2*pi*x);
plot(x, y);
xlabel('x (in radians)');
ylabel('10*sin(2*pi*x)');
title('A sine function');
grid
在命令窗口中输入
example1
并按回车键即可运行该程序。
2.5 MATLAB编程中的控制语句
- for循环 :用于创建循环或重复执行过程,一般形式为:
for x = array
[commands]
end
- if语句 :用于在满足特定条件时执行表达式,一般形式为:
if expression
[commands if expression is True]
else
[commands if expression is False]
end
示例(example2.m) :
% example2.m
% This program finds the minimum y value and its corresponding x index
x = [1 2 3 4 5 6 7 8 9 10];
y = [3 9 15 8 1 0 -2 4 12 5];
min1 = y(1);
for k = 1:10
min2 = y(k);
if (min2 < min1)
min1 = min2;
xo = x(k);
else
min1 = min1;
end
end
diary
min1, xo
diary off
2.6 使用MATLAB解方程
对于一般的(n)个联立方程(AX = B),其中(A)是系数矩阵,(X)是解向量,(B)是常数向量,可以使用以下两种方法求解:
-
方法1
:使用反斜杠运算符
\
,即(X = A\backslash B)。
-
方法2
:先求(A)的逆矩阵,再乘以(B),即(X = inv(A)*B)。
也可以使用
solve
命令解方程,例如求解二次方程(x^2 + 2x - 3 = 0):
>> [x] = solve('x^2 + 2*x - 3 = 0');
示例C.1
:使用MATLAB求解以下联立方程
[
\begin{cases}
25x_1 - 5x_2 - 20x_3 = 50 \
-5x_1 + 10x_2 - 4x_3 = 0 \
-5x_1 - 4x_2 + 9x_3 = 0
\end{cases}
]
-
方法1
:
>> A = [-25 -5 -20; -5 10 -4; -5 -4 9];
>> B = [50 0 0]';
>> X = inv(A)*B;
>> X = A\B;
- 方法2 :
[x1, x2, x3] = solve('25*x1 - 5*x2 - 20*x3 = 50', '-5*x1 + 10*x2 - 4*x3 = 0', '-5*x1 - 4*x2 + 9*x3 = 0');
练习问题C.1
:使用MATLAB求解以下联立方程
[
\begin{cases}
3x_1 - 2x_2 - x_3 = 6 \
3x_1 + x_2 - 3x_3 = 0 \
2x_1 - 3x_2 + 6x_3 = 6
\end{cases}
]
答案:(x_1 = 3 = x_3),(x_2 = 2)
2.7 MATLAB编程提示
- 使用最少的命令,避免执行额外的命令,特别是在循环中。
-
尽可能直接使用矩阵运算,避免使用
for、do和while循环。 - 有效使用函数来多次执行一系列命令。
- 不确定命令时,利用软件的帮助功能。
- 使用硬盘上的文件运行程序比使用软盘上的文件更快。
- 每个文件开头添加注释,方便后续理解。
- 编写长程序时,经常保存,必要时将其分解为较小的子程序。
2.8 其他有用的MATLAB命令
| 命令 | 解释 |
|---|---|
angle
| 相位角 |
bode
| 绘制波特图 |
conj
| 复数共轭 |
diary
| 将屏幕显示输出保存为文本格式 |
grid
| 为二维和三维绘图提供网格线 |
mean
| 向量的平均值 |
min(max)
| 向量的最小值(最大值) |
poly
| 将一组根转换为多项式 |
polyfit
| 多项式曲线拟合 |
roots
| 求多项式的根 |
sort
| 对向量的元素进行排序 |
sound
| 将向量作为声音播放 |
std
| 数据集合的标准差 |
step
| 单位阶跃响应 |
sum
| 向量元素的总和 |
title
| 绘图标题 |
通过以上内容,我们对复数的表示、运算以及MATLAB的基本操作、绘图、编程和解方程等方面有了较为全面的了解。从理论到实践,逐步掌握这些知识和技能,将有助于我们在信号与系统等领域进行更深入的研究和应用。
三、知识总结与拓展应用
3.1 知识总结
-
复数部分
- 复数有矩形、极坐标和指数三种表示形式,它们之间可以相互转换。在进行复数运算时,加减运算适合在矩形形式下进行,而乘除运算在极坐标或指数形式下更为简便。
- 欧拉公式 (e^{j\theta} = \cos\theta + j\sin\theta) 是复变函数中的核心,基于此还能推导出一系列有用的恒等式,如 (\cos\theta = \frac{e^{j\theta} + e^{-j\theta}}{2}) 和 (\sin\theta = \frac{e^{j\theta} - e^{-j\theta}}{2j})。
-
MATLAB部分
- MATLAB 是一个强大的计算工具,可用于数值分析、信号处理和科学可视化等。它能方便地进行基本数学运算、向量与矩阵操作,还可以进行二维、三维绘图以及编程和解方程。
-
在编程方面,使用 M 文件可以执行一系列语句,同时可以利用
for和if等控制语句实现流程控制。解方程时,既可以使用反斜杠运算符\或求逆矩阵的方法,也可以使用solve命令。
3.2 拓展应用
-
信号处理领域
- 在信号处理中,复数常用于表示和处理交流信号。例如,一个正弦信号 (A\sin(\omega t + \varphi)) 可以用复数 (Ae^{j(\omega t + \varphi)}) 来表示,这样在进行信号的加减、滤波等操作时会更加方便。
-
使用 MATLAB 可以对信号进行频谱分析,通过
fft函数计算信号的傅里叶变换,从而分析信号的频率成分。以下是一个简单的示例代码:
t = 0:0.01:1; % 时间向量
x = sin(2*pi*5*t) + 0.5*sin(2*pi*20*t); % 生成包含两个频率成分的信号
X = fft(x); % 计算傅里叶变换
f = (0:length(x)-1)*(1/(1/0.01)); % 频率向量
plot(f, abs(X)); % 绘制频谱图
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Single - sided Amplitude Spectrum of x(t)');
-
电路分析领域
- 在交流电路分析中,复数可以用来表示电压、电流和阻抗。例如,一个电阻 (R)、电感 (L) 和电容 (C) 组成的串联电路,其总阻抗 (Z = R + j(\omega L - \frac{1}{\omega C}))。
- 使用 MATLAB 可以对电路进行仿真分析,计算电路中的电流、电压等参数。以下是一个简单的串联 RLC 电路的仿真代码:
R = 10; % 电阻值
L = 0.1; % 电感值
C = 0.001; % 电容值
omega = 100; % 角频率
Z = R + 1j*(omega*L - 1/(omega*C)); % 计算总阻抗
V = 10; % 电源电压
I = V/Z; % 计算电流
disp(['Current magnitude: ', num2str(abs(I))]);
disp(['Current phase: ', num2str(angle(I)*180/pi), ' degrees']);
3.3 学习建议
- 理论与实践结合 :在学习复数和 MATLAB 时,要将理论知识与实际操作相结合。通过做练习题和编写代码来加深对知识的理解和掌握。
- 多参考资料 :除了上述介绍的内容,还可以参考相关的书籍、在线教程和论坛,了解更多的复数和 MATLAB 知识。
- 实践项目 :尝试参与一些实际的项目,如信号处理、电路仿真等,将所学知识应用到实际中,提高自己的实践能力。
3.4 总结展望
通过对复数和 MATLAB 的学习,我们掌握了复数的表示、运算以及 MATLAB 的基本操作、绘图、编程和解方程等技能。这些知识和技能在信号与系统、电路分析等领域有着广泛的应用。在未来的学习和工作中,我们可以进一步深入研究这些领域,利用复数和 MATLAB 解决更复杂的问题,为相关领域的发展做出贡献。
3.5 流程图总结
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始学习]):::startend --> B{选择学习内容}:::decision
B -->|复数| C(学习复数表示形式):::process
B -->|MATLAB| D(学习MATLAB基础操作):::process
C --> E(学习复数运算):::process
D --> F(学习向量与矩阵操作):::process
E --> G(学习欧拉公式及恒等式):::process
F --> H(学习MATLAB绘图):::process
G --> I(进行复数运算练习):::process
H --> J(学习MATLAB编程):::process
I --> K(结合MATLAB进行复数计算):::process
J --> L(学习MATLAB解方程):::process
K --> M(拓展应用到信号处理):::process
L --> N(拓展应用到电路分析):::process
M --> O([总结知识与技能]):::startend
N --> O
通过这个流程图,我们可以清晰地看到学习复数和 MATLAB 的整个过程,从基础知识的学习到实践应用,再到最后的总结回顾,逐步深入掌握相关知识和技能。希望大家在学习过程中能够按照这个流程,有条不紊地进行学习,取得良好的学习效果。
超级会员免费看

2948

被折叠的 条评论
为什么被折叠?



