matlab初始化输入条件,指定总线信号的初始条件

创建用于初始化的非完全结构体

非完全初始条件结构体为总线的部分元素提供初始值。如果您在仿真过程中使用非完全初始条件结构体,Simulink 将创建一个完全的初始条件结构体来表示总线的所有元素。对于非完全初始条件结构体没有显式指定值的每个元素,Simulink 将为它们指定相应的接地值。

在创建模型的迭代过程中,为模块参数值指定非完全结构体可能很有用。非完全结构体使您可重点关注总线中的部分信号。当您使用非完全结构体时,Simulink 将隐式初始化未指定的信号。

在定义非完全初始条件结构体时:

只包括总线中的字段。

省略总线中的一个或多个字段。

使初始条件结构体中的字段对应于总线元素的嵌套级别。

在结构体和总线的相同嵌套级别中,可根据需要以不同于总线元素的顺序指定结构体字段。

注意

初始条件结构体的值必须位于对应的总线元素的设计最小值和最大值范围内。Simulink 会在您更新图或对模型进行仿真时执行此范围检查。

假设您有一个总线 Top,它包含三个元素(A、B 和 C)并具有以下特征:

A 是一个嵌套总线,具有两个信号元素。

B 是一个信号。

C 是一个嵌套总线,包含总线 A 作为其嵌套总线。

ex_bus_initial_conditions 模型包含嵌套的 Top 总线。这是模型在更新后的外观。

a20107786a2e22de7f4386504c096fbe.png

下面总结了 Top 总线层次结构以及总线元素的数据类型、维度和复/实性。

Top

A (sub1)

A1 (double)

A2 (int8, 5x1, complex)

B (double)

C (sub2)

C1 (int16)

C2 (sub1)

A1 (double)

A2 (int8, 5x1, complex)

在这些示例中,K 是为 Unit Delay 模块的初始值指定的初始条件结构体。初始条件结构体对应于 ex_bus_initial_conditions 模型中的 Top 总线。以下是一些有效的初始条件设定。

有效语法说明K.A.A1 = 3使用值 3 初始化总线元素 Top.A.A1。

K = struct('C',struct('C1',int16(4)))总线元素 Top.C.C1 为 int16。对应的结构体字段显式指定 int16(4)。您也可以将该字段值指定为 4,而不指定显式数据类型。

K = struct('B',3,'A',struct('A1',4))总线元素 Top.B 和 Top.A 在总线中位于同一嵌套级别。对于位于同一嵌套级别的总线元素,对应的结构体字段的顺序无关紧要。无效的非完全初始条件结构体

在下面的示例中,K 是为 Unit Delay 模块的初始值指定的初始条件结构体。初始条件结构体对应于 ex_bus_initial_conditions 模型中的 Top 总线。

以下三个初始条件指定无效:

无效语法语法无效的原因K.A.A2 = 3值维度和复/实性不匹配。总线元素 Top.A.A2 为 5x1,但 K.A.A2 为 1x1;Top.A.A2 为复数,但 K.A.A2 为实数。

K.C.C2 = 3不能使用标量值来初始化初始条件子结构体。

K = struct('B',3,'X',4)不能指定不在总线中的字段(X 不在总线中)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 MATLAB 脚本来计算系统的总线入射矩阵: ```matlab % 定义系统参数 n = 4; % 总线数 Z = [0.2 + 0.6i, 0.4 + 0.5i, 0.3 + 0.3i, 0.1 + 0.4i]; % 线路阻抗 % 计算总线入射矩阵 Y = zeros(n, n); % 初始化导纳矩阵 for i = 1:n for j = 1:n if i == j % 对角线上的元素为总导纳 Y(i, i) = Y(i, i) + 1/Z(i); else % 非对角线元素为互导纳 Y(i, j) = -1/Z(i); end end end % 输出结果 B = imag(Y); % 获取总线入射矩阵 disp('总线入射矩阵 B:'); disp(B); ``` 在这个脚本,我们首先定义了系统的总线数和线路阻抗。然后,我们通过一个嵌套的循环来计算总线入射矩阵的元素。在每次循环,我们将互导纳设置为非对角线元素,将总导纳设置为对角线元素。最后,我们通过取总导纳矩阵的虚部来获取总线入射矩阵,并将其输出到屏幕上。 要在提供的 MATLAB 潮流程序使用这个总线入射矩阵和线路阻抗,您需要将这些值作为输入参数传递给程序。具体来说,您需要将线路阻抗作为一个向量传递给 `makeYbus` 函数,将总线入射矩阵作为一个矩阵传递给 `runpf` 函数。以下是一个示例代码片段: ```matlab % 定义系统参数 n = 4; % 总线数 Z = [0.2 + 0.6i, 0.4 + 0.5i, 0.3 + 0.3i, 0.1 + 0.4i]; % 线路阻抗 % 计算总线入射矩阵 Y = zeros(n, n); % 初始化导纳矩阵 for i = 1:n for j = 1:n if i == j % 对角线上的元素为总导纳 Y(i, i) = Y(i, i) + 1/Z(i); else % 非对角线元素为互导纳 Y(i, j) = -1/Z(i); end end end % 运行潮流计算 mpc = loadcase('case4'); % 载入示例数据 mpc.bus(:, [3 4]) = [real(B) imag(B)]; % 将总线入射矩阵赋值给 P 和 Q mpc.branch(:, 4) = Z; % 将线路阻抗赋值给阻抗列 results = runpf(mpc); % 运行潮流计算 % 输出结果 disp('潮流计算结果:'); disp(results.bus); ``` 在这个示例代码,我们首先计算了总线入射矩阵。然后,我们载入了一个示例数据集,并将总线入射矩阵和线路阻抗作为输入参数传递给 `runpf` 函数。最后,我们将潮流计算结果输出到屏幕上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值