20、复数与MATLAB基础:从理论到实践的全面指南

复数与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 的整个过程,从基础知识的学习到实践应用,再到最后的总结回顾,逐步深入掌握相关知识和技能。希望大家在学习过程中能够按照这个流程,有条不紊地进行学习,取得良好的学习效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值