1需求
仿真测试8*10阶举证电容等效容值。
2模型搭建
2.1打开simscape
在打开simulink之后打开simscape库,Simscape库位置如下
2.2搭建模型
在库中寻找需要的元件搭建电路。
2.2.1基本元件
电阻电容电感等基础器件,搭建电路之后需要对其进行幅值,同时搭建电路需要有一个Electrical Reference元件,用作电气接地。
2.2.2直流电压源
2.2.3电压表
2.2.4 示波器
2.2.5转换器
将输入物理信号转换为Simulink输出信号,将电压表获得的数据用示波器显示,需要使用转换器。
2.2.6求解器
对物理模型进行计算
对于物理模型的计算,一定要添加一个求解器,否则会报错
2.2.7添加标题
xy轴标签
点击示波器,配置属性–>画面 修改标题以及Y轴标签选择配置属性–>时间修改x轴标签
打开视图–>样式 修改背景以及线的颜色
搭建完如下图所示。
3程序
3.1 matlab中新建脚本
3.2编写程序
% 参数设置
n_rows = 8; % 行数
n_cols = 10; % 列数
C_value = 1e-6; % 单个电容值(法拉)
freq = 50; % 频率(Hz)
V0 = 5; % 交流信号幅值(伏特)
omega = 2 * pi * freq;
Yval = 1j * omega * C_value; % 导纳值% 构建导纳矩阵
n_nodes = n_rows * n_cols;
Y = zeros(n_nodes, n_nodes, 'like', Yval); % 初始化复数导纳矩阵for k = 1:n_nodesi = floor((k-1)/n_cols) + 1; % 当前节点的行号j = mod(k-1, n_cols) + 1; % 当前节点的列号% 检查右邻居是否存在并更新导纳矩阵if j < n_colsneighbor = k + 1;Y(k, neighbor) = Y(k, neighbor) - Yval;Y(k, k) = Y(k, k) + Yval;end% 检查左邻居if j > 1neighbor = k - 1;Y(k, neighbor) = Y(k, neighbor) - Yval;Y(k, k) = Y(k, k) + Yval;end% 检查上邻居if i > 1neighbor = k - n_cols;Y(k, neighbor) = Y(k, neighbor) - Yval;Y(k, k) = Y(k, k) + Yval;end% 检查下邻居if i < n_rowsneighbor = k + n_cols;Y(k, neighbor) = Y(k, neighbor) - Yval;Y(k, k) = Y(k, k) + Yval;end
end% 确定激励节点(第一行和第八行的最左侧)
node1 = 1; % 第一行第一列
node71 = (n_rows-1)*n_cols + 1; % 第八行第一列,即(8-1)*10 +1 = 71
known_nodes = [node1, node71];
unknown_nodes = setdiff(1:n_nodes, known_nodes); % 其余节点% 提取子矩阵
Y11 = Y(known_nodes, known_nodes);
Y12 = Y(known_nodes, unknown_nodes);
Y21 = Y(unknown_nodes, known_nodes);
Y22 = Y(unknown_nodes, unknown_nodes);% 设置已知电压:节点1为5V,节点71为0V
Vk = [V0; 0]; % 电压向量% 求解未知节点电压
Vu = -Y22 \ (Y21 * Vk); % 解线性方程组% 计算注入电流
Ik = Y11 * Vk + Y12 * Vu;% 计算等效导纳和电容
I1 = Ik(1); % 节点1的注入电流
Y_eq = I1 / (Vk(1) - Vk(2)); % 等效导纳
C_eq = imag(Y_eq) / omega; % 等效电容(法拉)% 显示结果
fprintf('等效电容值为:%.4f μF\n', C_eq * 1e6);
3.3执行
切换路径至代码位置。注意:路径不要有中文。
命令行窗口执行程序
输入程序文件名即可,不要后面的m。
4仿真文件和程序
https://download.csdn.net/download/weixin_51248645/90656484