MATLAB求解函数最值

本文最后更新于:2024年3月7日 晚上

图 1 通信原理例题 如图,第一问在求解抽样信号的量化编码时,首先要将抽样信号幅值用信号最大幅值归一化。答案公式使用了\(I_s=\frac{0.546875}{10}\),但明眼人一看就感觉f(t)的幅值不是10V。虽然说我理解在这里使用10V作为输入信号幅值是为了简化运算,但本着爱钻牛角尖精益求精的精神,我想着求一下f(t)的幅值。(我是真的闲啊,是不是忘了明天考嵌入式,再过一周考数字信号处理和通信原理?) 对于f(t)=,,,,,显然直接求导找驻点,然后代入验证极值就可以得到最值,但我不想手算,直接上MATLAB,谁叫它是宇宙第一(maybe?)数学工具呢。
先绘个图,探探虚实

1
2
3
4
5
6
7
syms x
y = 10*sin(4*pi*x)+sin(8*pi*x);
y1 = 10*sin(4*pi*x);
y2 = sin(8*pi*x);
fplot(y);
hold on;fplot(y1);
hold on ;fplot(y2);
图 2 信号波形

再求一下函数驻点

1
2
3
4
dy = diff(y);
x1 = solve(dy);
ys = matlabFunction(y)
sol = ys(x1);

然后打印出来:

1
2
3
pretty(sol)
4 3 4 3
- 10 sin(log(root(z + 5 z + 5 z + 1, z, 1)) 1i) - sin(log(root(z + 5 z + 5 z + 1, z, 1)) 2i)

输出结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
pretty(sol)

/ #1 + #5 \
| |
| #2 + #6 |
| |
| #3 + #7 |
| |
| #4 + #8 |
| |
| - #1 - #5 |
| |
| - #2 - #6 |
| |
| - #3 - #7 |
| |
\ - #4 - #8 /

where

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| 1 - sqrt| - -------- - - | | | |
| | \ \ 8 8 / / | |
#1 == sin| acos| ------------------------------------------ | 4 | 10
\ \ 2 / /

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| 1 - sqrt| -------- - - | | | |
| | \ \ 8 8 / / | |
#2 == sin| acos| ---------------------------------------- | 4 | 10
\ \ 2 / /

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| sqrt| - -------- - - | + 1 | | |
| | \ \ 8 8 / / | |
#3 == sin| acos| ------------------------------------------ | 4 | 10
\ \ 2 / /

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| sqrt| -------- - - | + 1 | | |
| | \ \ 8 8 / / | |
#4 == sin| acos| ---------------------------------------- | 4 | 10
\ \ 2 / /

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| 1 - sqrt| - -------- - - | | | |
| | \ \ 8 8 / / | |
#5 == sin| acos| ------------------------------------------ | 8 |
\ \ 2 / /

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| 1 - sqrt| -------- - - | | | |
| | \ \ 8 8 / / | |
#6 == sin| acos| ---------------------------------------- | 8 |
\ \ 2 / /

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| sqrt| - -------- - - | + 1 | | |
| | \ \ 8 8 / / | |
#7 == sin| acos| ------------------------------------------ | 8 |
\ \ 2 / /

/ / / / sqrt(33) 1 \ \ \ \
| | sqrt(2) sqrt| sqrt| -------- - - | + 1 | | |
| | \ \ 8 8 / / | |
#8 == sin| acos| ---------------------------------------- | 8 |
\ \ 2 / /

乖乖,这是个什么东西?将其翻译成人话:

1
2
3
4
5
6
7
8
9
10
11
12
d = double(sol)

d =

-0.0000 -11.5372i
-10.1910 + 0.0000i
-0.0000 +11.5372i
10.1910 + 0.0000i
0.0000 +11.5372i
10.1910 + 0.0000i
0.0000 -11.5372i
-10.1910 + 0.0000i

看来,幅值是10.191


MATLAB求解函数最值
http://example.com/2023/05/07/MATLAB求解函数最值/
作者
叶逸昇
发布于
2023年5月7日
许可协议