---
description: >-
  1. 处理电动和混动汽车能耗的后向和前向算法模型(simulink)，以及图形函数、后处理函数等实现。 2.
  构建储能元数据信息：电池标称特性、电池标识符等以及静止、恒定电流和恒定电压等特征阶段。 3. 使用电流脉冲或要识别的等效电路模型类型配置阻抗分析。 4.
  依据恒定电压阶段相关或不相关的恒定电流阶段等，分析电池的特征量。
---

# MATLAB(Octave)混电动力能耗评估

{% embed url="https://viadean.notion.site/MATLAB-Octave-1201ae7b9a3280df9a03c2261163c910" %}

{% content-ref url="../zhi-dian-mi-jin-brief" %}
[zhi-dian-mi-jin-brief](../zhi-dian-mi-jin-brief)
{% endcontent-ref %}

### 🍪语言内容分比

{% @mermaid/diagram content="pie title 语言分比
 "MATLAB":90
 "Python":10" %}

{% @mermaid/diagram content="pie title 内容分比
 "算法":90
 "数学":30
 "物理、电路":30
 "能源、电池":20" %}

### 🍇MATLAB电路分析

假设我们要绘制以下三个函数：

$$
\begin{aligned} & v_1(t)=5 \cos (2 t+45 \text { deg. }) \\ & v_2(t)=2 \exp (-t / 2) \\ & v_3(t)=10 \exp (-t / 2) \cos (2 t+45 \text { deg. }) \end{aligned}
$$

以下是允许我们执行此操作的 MATLAB 命令序列。这不是一组唯一的命令。

```matlab
 >> t=0:0.1:10;
 >> v1=5*cos(2*t+0.7854);
 >> taxis=0.000000001*t;
 >> plot(t,taxis,'w',t,v1,'r')
 >> grid
 >> hold on
 >> v2=2*exp(-t/2);
 >> plot (t,v2,'g')
 >> v3=10*exp(-t/2).*cos(2*t+0.7854);
 >> plot (t,v3,'b')
 >> title('Example 1 -- Plot of v1(t), v2(t) and v3(t)')
 >> xlabel ('Time in seconds')
 >> ylabel ('Voltage in volts')
 >> text (6,6,'v1(t)')
 >> text (4.25,-1.25,'v2(t)')
 >> text (1,1.75,'v3(t)')
```

在 MATLAB 中处理复数很容易。MATLAB 使用矩形表示。要输入复数，请在提示符下键入：

```matlab
 EDU>>z = a +bj or a + bi
```

要找到 z 的大小和角度，请使用 `abs()` 和 `angle ()` 函数。

```matlab
 Mag = abs(z) Angle = angle(z)
```

angle 函数以弧度表示角度。要转换为度数，您可以使用：

```matlab
 angle_deg = angle(z)*180/pi
```

在 MATLAB 中输入：`V = (5+9j)*(7+j)/(3-2j)`

```matlab
 Magn_V = abs(V)
```

要查找复数 z 的实部和虚部，请输入：

```matlab
 real_z=real(z) imag_z=imag(z)
```

假设您有以下两个线性复杂方程，其中未知数为 I1 和 I2：

$$
\begin{aligned} & (600+1250 j) I 1+100 j . I 2=25 \\ & 100 j . I 1+(60-150 j) \cdot I 2=0 \end{aligned}
$$

这可以写成矩阵形式：A.I = B。要在 MATLAB 中解决这个问题，可以使用矩阵左除运算符：

```matlab
 I = A\B
```

或者也可以使用以下命令：`I = inv(A)*B`

MATLAB代码如下：

```matlab
 EDU»A=[600+1250j 100j;100j 60-150j];
 EDU»B=[25;0];
 EDU»I=A\B
 I =
 ​
 0.0074 - 0.0156i
 0.0007 - 0.0107i
 ​
 EDU»MAGN=abs(I)
 ​
 MAGN =
 ​
 0.0173
 0.0107
 ​
 EDU»ANGLE=angle(I)*180/pi
 ​
 ANGLE =
 ​
 -64.5230
 -86.3244
```

使用 abs() 运算符来查找复数的幅度，使用 angle() 运算符来查找角度（以弧度为单位）。为了得到以度为单位的结果，我们将角度乘以 180/pi，如上所示。

求下列形式的多项式的根：

$$
A=a_m s^m+a_{m-1} s^{m-1}+a_{m-2} s^{m-2}+\ldots a_1 s^1+a_0
$$

定义多项式如下：`A = [ am am-1 am-2 ... a1 a0]`;

例如：$$A=4 s^2+12 s+1$$

```matlab
 >> A=[4 12 1];
 >> roots(A)
 ​
 ans =
 -2.9142
 -0.0858
```

$$A=5 s^2+3 s+2$$

```matlab
 >> A=[5 3 2];
 >> roots(A)
 ​
 ans =
 -0.3000 + 0.5568i
 -0.3000 - 0.5568i
```

当传递函数指定为两个多项式的比率时，使用 Bode 命令。

$$
H(s)=\frac{N(s)}{D(s)}=\frac{a_m s^m+a_{m-1} s^{m-1}+\ldots a_1 s^1+a_0}{b_n s^n+b_{n-1} s^{n m-1}+\ldots b_1 s^1+b_0}
$$

在 MATLAB 中，指定 D 和 N：

```matlab
 num = [am am-1 ... a1 ao] den = [bn bn-1 ... b1 bo]
```

要绘制传递函数（幅度和相位），请输入：`bode (num, den)`

例如：

$$
H(s)=(0.5 s+1) /\left(1 E-4 s^2+0.01 s+1\right)
$$

```matlab
 num = [0.5 1];
 den = [1e-4 0.01 1] ;
 ​
 bode (num, den)
```

当给定极点和零点时绘制传递函数：

$$
H(s)=K(s+s 1)(s+s 2)\left(1+as+bs^2\right) /(s+s 3)(s+s 4)\left(1+cs+ds^2\right)
$$

例如：

$$
H(s)=72 x(s+2) / s(s+50)(s+250)(s+1000)\left(s^2+2.4 s+144\right)
$$

首先找到分母为 `s(s+50)(s+250)(s+1000)` 对应的多项式的系数：

```matlab
 rootsd1=[0; -50; -250; -1000 ];
 d1=poly(rootsd1);
```

\


