基于Matlab的结点电压法及相关定理验证的人机交互界面!


前言

本篇主要针于无储能元件的电路分析
由结点电压法求得相关结点的电压
进而验证戴维宁定理、叠加定理等


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验背景

问题:对于大型网络,方程数目庞大,难于求解
方法:结点电压方程的变量数少,适合任意结构的电路,容易编程语言实现
优势:结合计算机专业的优势,学习电路的计算机分析方法

二、实验内容

(1).建立任意电阻网络的节点电压方程
(2).建立含电阻、电流源及电压源的任意电路的结点电压法方程
(3).验证两个电路定理(叠加定理、戴维宁定理)
(4).编写人机交互界面,方便操作与展示

1.原理简介

1).结点电压法(nodal method of analysis):在电路中选择某一结点为参考结点,其他结点与此参考结点之间的电压称为结点电压。以结点电压为电路变量,根据KCL列写电路方程求解电路的方法称为结点电压法。
(2). 戴维宁定理(Thevenin’s theorem):含独立电源的线性电阻单口网络N,就端口特性而言,可以等效为一个电压源和电阻串联的单口网络。电压源的电压等于单口网络在负载开路时的电压Uoc;电阻R0是单口网络内全部独立电源为零值时所得单口网络的等效电阻。
(3). 叠加定理 (Superposition theorem):对于一个线性系统,一个含多个独立源的双边线性电路的任何支路的响应(电压或电流),等于每个独立源单独作用时的响应的代数和,此时所有其他独立源被替换成他们各自的阻抗。

2.编程流程图

代码如下:

求出最多结点个数

function results = maxpointcalculate(app)maxpoint=0;if app.RNumber~=0for i=1:1:app.RNumber    if app.RNP(i,3)>maxpointmaxpoint=app.RNP(i,3);endif app.RNP(i,4)>maxpointmaxpoint=app.RNP(i,4);endendendif app.VNumber~=0for i=1:1:app.VNumberif app.VNP(i,3)>maxpointmaxpoint=app.VNP(i,3);endif app.VNP(i,4)>maxpointmaxpoint=app.VNP(i,4);endendendif app.INumber~=0for i=1:1:app.INumberif app.INP(i,3)>maxpointmaxpoint=app.INP(i,3);endif app.INP(i,4)>maxpointmaxpoint=app.INP(i,4);endendendapp.MaxPointNumber=maxpoint; %求出最多有多少个结点end

处理电压源

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())NumberofCompaniedVoltSource=0;for g=1:1:app.VNumberif app.VNP(g,5)==1NumberofCompaniedVoltSource=NumberofCompaniedVoltSource+1;%有几个有伴电压源endendNumberofNoCompanyVoltSource=0;for g=1:1:app.VNumberif app.VNP(g,5)==0NumberofNoCompanyVoltSource=NumberofNoCompanyVoltSource+1;%有几个无伴电压源endendNewCurrentsource=zeros(NumberofCompaniedVoltSource,4);%新电流源=U/R 待会儿插入到INP中!!!!!!!!!!!!k=1;for g=1:1:app.VNumberif app.VNP(g,5)==1NewCurrentsource(k,2)=app.VNP(g,2)/app.VNP(g,6);NewCurrentsource(k,3)=app.VNP(g,3);NewCurrentsource(k,4)=app.VNP(g,4);k=k+1;endend

处理有伴电流源

 %接下来计算有伴电流源  将有伴电流源加到新电流源矩阵中if app.INumber~=0app.INP=[app.INP;NewCurrentsource];elseapp.INP=NewCurrentsource;end

求出电导矩阵

GMatrix=zeros(app.MaxPointNumber+NumberofNoCompanyVoltSource+1,app.MaxPointNumber+NumberofNoCompanyVoltSource+1);for j=1:1:app.RNumberGMatrix(app.RNP(j,3),app.RNP(j,3))=GMatrix(app.RNP(j,3),app.RNP(j,3))+(1/app.RNP(j,2));GMatrix(app.RNP(j,4),app.RNP(j,4))=GMatrix(app.RNP(j,4),app.RNP(j,4))+(1/app.RNP(j,2));GMatrix(app.RNP(j,3),app.RNP(j,4))=GMatrix(app.RNP(j,3),app.RNP(j,4))-(1/app.RNP(j,2));GMatrix(app.RNP(j,4),app.RNP(j,3))=GMatrix(app.RNP(j,4),app.RNP(j,3))-(1/app.RNP(j,2));end

计算初始电流源矩阵

 IsMatrix=zeros(app.MaxPointNumber+NumberofNoCompanyVoltSource+1,1);for p=1:1:app.INumber+NumberofCompaniedVoltSourceIsMatrix(app.INP(p,4),1)=IsMatrix(app.INP(p,4),1)+app.INP(p,2);%终结结点,加上电流源数值IsMatrix(app.INP(p,3),1)=IsMatrix(app.INP(p,3),1)-app.INP(p,2);%起始结点,减去电流源数值end

将无伴电流源增补方程加入到电导矩阵中

  i=1;%第i个无伴电流源if NumberofNoCompanyVoltSource~=0for j=1:1:app.VNumberif app.VNP(j,5)==0GMatrix(app.VNP(j,4),app.MaxPointNumber+i)=-1;%无伴电压源终结结点  结点电压方程需要  减去电流GMatrix(app.VNP(j,3),app.MaxPointNumber+i)=1;%无伴电压源起始结点   结点方程就要  加上电流GMatrix(app.MaxPointNumber+i,app.VNP(j,4))=1;GMatrix(app.MaxPointNumber+i,app.VNP(j,3))=-1;IsMatrix(app.MaxPointNumber+i,1)=app.VNP(j,2);%无伴电压源终结结点电压-起始结点电压=无伴电压源电压数值i=i+1;endendend

声明并计算最终结点电压矩阵

           UnMatrix=pinv(GMatrix)*IsMatrix;app.UnMatrix22=UnMatrix;UnMatrix2=zeros(app.MaxPointNumber-1,1);for m=1:1:app.MaxPointNumber-1UnMatrix2(m,1)=UnMatrix(m,1);endapp.UITable.ColumnName(1,1)={'数值/v'};for i=1:1:app.MaxPointNumber-1app.UITable.RowName(i,1)={strcat('Un',num2str(i))};app.UITable.Data(i,1)=UnMatrix2(i,1);end

戴维宁定理验证(求两结点开路电压并利用图像斜率求等效电阻)

  Voltage1=app.UnMatrix22(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),4),1)-app.UnMatrix22(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),3),1);app.RNP2=app.RNP;Resistance1=app.RNP2(str2double(strrep(app.DropDown.Value,'R','')),2);app.RNP2(str2double(strrep(app.DropDown.Value,'R','')),2)=0.5*app.RNP2(str2double(strrep(app.DropDown.Value,'R','')),2);Resistance2=0.5*Resistance1;app.UnMatrix22=CALCULATE(app,app.RNP2,app.VNP,app.INP);%调用计算函数Voltage2=app.UnMatrix22(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),4),1)-app.UnMatrix22(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),3),1);Current1=Voltage1/Resistance1;Current2=Voltage2/Resistance2;EqualResistance=abs((Voltage2-Voltage1)/(Current2-Current1));%app.UITable2.Data(1,1)=EqualVoltage;app.UITable2.Data(1,3)=EqualResistance;%再次调用函数求开路电压app.RNP2(str2double(strrep(app.DropDown.Value,'R','')),2)=99999999999999999999999;UnMatrix=CALCULATE(app,app.RNP2,app.VNP,app.INP);     app.UITable2.Data(1,1)=abs(UnMatrix(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),4),1)-UnMatrix(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),3),1));app.UITable2.Data(1,2)=abs((UnMatrix(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),4),1)-UnMatrix(app.RNP(str2double(strrep(app.DropDown.Value,'R','')),3),1))/EqualResistance);calculateButtonPushed(app);if app.Type.Value=="电压源"app.Switch.Enable='on';if app.Switch.Value=="yes"app.CompaniedR.Enable='on';n=1;while(n<=app.RNumber)i=n;m=strcat('R',num2str(i));app.CompaniedR.Items{n}=m;n=n+1;endendendif app.Type.Value=="电阻"app.Switch.Enable='off';app.CompaniedR.Enable='off';endif app.Type.Value=="电流源"app.Switch.Enable='off';app.CompaniedR.Enable='off';end......

叠加定理验证(分别计算各个激励在端口单独作用的响应)

 %计算电流源单独作用的节点电压if tempINumber~=0for i=1:1:tempINumberfor m=1:1:tempINumberapp.INP(m,2)=0;endapp.INP(i,1:4)=INP2(i,1:4);UnMatrix=CALCULATE(app,app.RNP,app.VNP,app.INP);app.UITable4.ColumnName(1,times)={strcat('Is',num2str(times))};for i=1:1:app.MaxPointNumber-1app.UITable4.RowName(i,times)={strcat('Un',num2str(i))};app.UITable4.Data(i,times)=UnMatrix(i,1);endtimes=times+1;endend%计算电压源单独作用的节点电压if tempVNumber~=0for i=1:1:tempVNumberfor m=1:1:tempVNumberapp.VNP(m,2)=0;endapp.VNP(i,1:4)=VNP2(i,1:4);UnMatrix=CALCULATE(app,app.RNP,app.VNP,app.INP);app.UITable4.ColumnName(1,times)={strcat('Us',num2str(times))};for i=1:1:app.MaxPointNumber-1app.UITable4.RowName(i,times)={strcat('Un',num2str(i))};app.UITable4.Data(i,times)=UnMatrix(i,1);endtimes=times+1;endendapp.VNP=VNP2;%返回修改前的值app.INP=INP2;

计算函数

 function results = CALCULATE(app,rnp,vnp,inp)NumberofCompaniedVoltSource=0;for g=1:1:app.VNumberif vnp(g,5)==1NumberofCompaniedVoltSource=NumberofCompaniedVoltSource+1;%有几个有伴电压源endendNumberofNoCompanyVoltSource=0;for g=1:1:app.VNumberif vnp(g,5)==0NumberofNoCompanyVoltSource=NumberofNoCompanyVoltSource+1;%有几个无伴电压源endend

编者独白

人机交互界面设计方法
(1).在MATLAB的appdesigner上构建交互界面的基本框架
(2).添加回调函数执行相应功能

基于Matlab的结点电压法及相关定理验证的人机交互界面!相关推荐

  1. 电压源和电流的关联参考方向_结点电压法解题系列之四:电流源支路

    利用结点电压法求解时,有的结点之间连接的是电流源支路.如图1所示电路中,结点2与参考结点4之间连接的是5A电流源.对结点2列写标准形式KCL,或直接利用KCL列出结点电压方程,都很容易,也不易出错.只 ...

  2. 【雷达通信】基于matlab距离角度解耦法MIMO-OFDM雷达波束形成【含Matlab源码 2208期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达通信]基于matlab距离角度解耦法MIMO-OFDM雷达波束形成[含Matlab源码 2208期] 点击上面蓝色字体,直接付费下载 ...

  3. matlab中电压幅值不对,基于MATLAB的SPWM电压型逆变器的仿真与分析

    龙源期刊网 http://www.doczj.com/doc/b1455622f6ec4afe04a1b0717fd5360cba1a8da1.html 基于MATLAB的SPWM电压型逆变器的仿真与 ...

  4. 基于matlab的频率特性测试仪,基于Matlab控制系统频率特性分析法

    基于Matlab控制系统频率特性分析法 基于Matlab控制系统频率特性分析法 本文主要介绍了基于Matlab控制系统的频率特性分析方法.频域稳定性判据以及开环频域性能分析,并获得频率响应曲线等.通过 ...

  5. 基于结点电压法的配电网状态估计matlab仿真

    目录 一.理论基础 二.MATLAB程序设计 三.测试结果 一.理论基础 对配电网实施有效控制和操作的前提是实时数据库中数据的可靠性和准确性.状态估计是一种利用测量数据的相关性和冗余度,应用计算机技术 ...

  6. 用matlab编程节点电压法求电路,MATLAB在电路中的应用

    <MATLAB在电路中的应用>由会员分享,可在线阅读,更多相关<MATLAB在电路中的应用(59页珍藏版)>请在人人文库网上搜索. 1.MATLAB应用(三) Matlab在电 ...

  7. 纯电阻电路的分析方法——结点电压法

    目录 1. 相关物理量 2. 特点 3. 一般形式的总结 4. 各种支路的处理 (1)含电压源电阻串联 (1)含有无伴电压源 (3)含有受控电流源 (4)含有有伴受控电压源 (5)含有无伴受控电压源 ...

  8. 结点电压法的c语言实现,节点电压法 -电路分析 -电子发烧友网站

    第2节 节点电压法 一.节点电压方程出发点 进一步减少方程数,用未知的节点电压代替未知的支路电压来建立方程. 图3.2-1电路共有4个节点. 6条支路(把电流源和电导并联的电路看成是一条支路).用支路 ...

  9. 【目标跟踪】基于matlab GUI帧差法结合卡尔曼滤波行人姿态识别【含Matlab源码 1127期】

    ⛄一.基于人体特征识别和卡尔曼滤波的行人跟踪算法简介 1 基于体型和行为姿态特征的人体识别算法 从红外图像中可以得到目标与背景之间的灰度级差别,从而区分出有生命特征的运动物体,但仅从亮度特征无法区别出 ...

最新文章

  1. python 多线程和协程结合_一文讲透 “进程、线程、协程”
  2. spring3.0注解
  3. 【干货】系统管理员必备,服务器监控工具汇总
  4. 映客上云 助力《疫战到底》系列课程吸引数千万用户观看
  5. springboot三层架构_几张图让你快速了解数据中台技术架构
  6. Java虚拟机(JVM)概念简介
  7. collection集合 网_房地产信托业务(集合)2020年1-9月分析报告
  8. java 中的static 用法
  9. 通过 PackageManager 获得你想要的 App 信息
  10. CocosCreator动画背景移动及其小鸟重力加速度坠落
  11. 【学堂在线数据挖掘:理论方法笔记】第l六天(3.31)
  12. golang:cannot unmarshal number into Go value of type []json.RawMessage
  13. 图片求导锐化 与模糊检测
  14. Appstore抓包获取APP历史版本
  15. 关于Unable to read additional data from server sessionid 0x0问题的解决
  16. CAD打开慢,卡在99%
  17. 3. Unity之三维模型
  18. vue+springboot+阿里云短信服务(集成redis实现验证码登录业务)
  19. 关于Jmeter中的函数和变量用法
  20. mysql中的locate_mysql中LOCATE和CASE WHEN...THEN...ELSE...END结合用法

热门文章

  1. Python全栈工程师(25:Mysql数据库)
  2. 【python打包】利用pyinstaller打包详细教程,一把过
  3. TNS-12546 TNS-12560 TNS-00516
  4. CentOS 8 安装+SSH+Cmatrix过程
  5. 63.(cesium之家)cesium河流流水
  6. 利用MATLAB批量读写tif数据(Landsat78)
  7. 4K+AI将加速催生5G时代颠覆性应用
  8. 知乎上最好的项目管理书单!推荐收藏
  9. 网桥信号测试软件,史上最全的无线网桥应用知识
  10. HTML表格标签的案例