华中科技大学电力系统分析课程设计报告 基于matlab的短路电流计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012-2013第二学期课程设计
电力系统短路故障的计算机
算法程序设计
姓名
学号
班级
指导教师张凤鸽
目录
一、课程设计说明 (3)
二、选择所用计算机语言的理由 (3)
三、程序主框图、子框图及主要数据变量说明 (5)
四、三道计算题及网络图 (9)
五、设计体会 (21)
六、参考文献 (22)
七、附录(主程序及其注释) (23)
电分课设报告
一、课程设计说明
根据所给的电力系统,编制短路电流计算程序,通过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。
通过自己设计电力系统短路计算的程序,加深对电力系统短路计算的理解,同时培养自己在计算机编程方面的能力,提示自我的综合素质。
短路电流(short-circuit current)电力系统在运行中,相与相之间或相与地(或中性线)之间发生非正常连接(即短路)时流过的电流。
其值可远远大于额定电流,并取决于短路点距电源的电气距离。
例如,在发电机端发生短路时,流过发电机的短路电流最大瞬时值可达额定电流的10~15倍。
大容量电力系统中,短路电流可达数万安。
这会对电力系统的正常运行造成严重影响和后果。
三相系统中发生的短路有 4 种基本类型:三相短路,两相短路,单相对地短路和两相对地短路。
其中三相短路虽然发生的机会较少,但情况严重,又是研究其它短路的基础。
所以我们先研究最简单的三相短路电流的暂态变化规律。
二、选择所用计算机语言的理由
MATLAB是一套功能强大的工程计算软件,被广泛的应用于自动控制、机械设计、流体力学和数理统计等工程领域。
工程技术人员通过使用MATLAB提供的工具箱,可以高效的求解复杂的工程问题,并可以对系统进行动态的仿真,用强大的图形功能对数值计算结果进行显示。
MATLAB是必备的计算与分析软件之一,也是研究设计部门解决工程计算问题的重要工具。
我这次选用的是MATLAB R2009b计算软件。
MATLAB实现的优势:
MATLAB语言有不同于其他高级语言的特点,被称为第四代计算机语言。
正如第三代计算机语言如FORTRAN与C等使人们摆脱了对计算机硬件的操作一样,MATLAB语言使人们从繁琐的程序代码中解放出来。
它的丰富的函数是开发者无需重复编程,只要简单地调用和使用即可。
MATLAB语言最大的特点是简单和直接。
MATLAB语言的主要特点有:
1.编程效率高
MATLAB语言是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用MATLAB编写程序犹如在演算纸上排列公式与求解问题。
因此,也可通俗地称MATLAB语言为演算纸式科学算法语言。
由于它编程简单,所以编程效率高,易学易懂。
2.高效方便的矩阵和数组运算
MATLAB语言像BASIC、FORTRAN和C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变的照搬到数组建的运算中。
有些如算术运算符只要增加“.”就可以用于数组建间的运算。
另外,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解数字图像处理问题时显得大为简洁、高效、方便,这是其他高级语言所不能相比的。
3.用户使用方便
MATLAB语言是一种解释执行的语言(在没有被专门的工具编译之前),它灵活、方便,起跳时程序手段丰富,调试速度快,需要学习时间少。
人们用任何一种语言编程和调试一般都要经过四个步骤:编辑、编译、连接,以及执行和调试。
各个步骤之间是顺序关系,编程的过程就是在他们之间作瀑布型的循环。
MATLAB语言与其它语言相比,较好的解决了上述问题,把编辑、编译、连接和执行融为一体。
它能在同一画面上进行灵活操作,快速排除输入程序的书写错误、语法错误甚至语义错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言,更不用谈C和C++。
4.扩充性强,交互性好
MATLAB语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,且这些库函数同用户文件在形式上一样,所以用户文件也可以作为MATLAB的库函数来调用。
婴儿,用户可以根据自己的需要方便的建立和扩充新的库函数,提高MATLAB使用效率和扩充它的功能。
另外,为了充分利用FORTRAN、C等语言的资源,包括用户自己编好的FORTRAN、C语言程序,通过建立M文件的形式,混合编程,方便地调用有关的FORTRAN、C语言子程序,还可以在C语言和FORTRAN 语言中方便的使用MATLAB的数值计算功能。
良好的交互性增加了代码的重用性。
综上所述,MATLAB最适用的范围是科学计算,对于本文需要处理矩阵运算来实现图像处理算法来说,MATLAB再合适不过了。
MATLAB实现的缺点:
然而,较之于C 语言MATLAB 也有自己的劣势。
1.循环运算效率低
MATLAB 中所有的变量均为向量形式,这样一方面在对向量进行整体的计算时,表现出其他语言难以相比的高效率,但是对于向量中的单个元素,或是将向量作为单个的循环变量来处理时,其处理过程相当复杂.解决的办法之一是尽量发掘处理数据中的向量特征。
另一种办法是利用MATLAB 的扩展特性,将迭代过程和其他的循环过程放在“低级”语言中来实现。
2.封装性不好
一方面,所有的变量均保存在公共工作区中,任何语句都可以调用。
另一方面作为一件完备的软件,而不是实现算法的程序,编程人员需要花相对多的时间考虑如何设计用户界面。
虽然,MATLAB 提供了一定量的交互界面制作途径如GUI 等,但是作为一件真正的商品,最终的代码将不可避免的移植到较为“低级”的语言中,例如C 、C++。
综合MATLAB 的优劣,选择MATLAB 作为编程的平台,实际上是编程效率和程序运行效率两者之间的妥协。
在现阶段,对图象处理后的运行结果有严格要求,而对运行时间没有特别的限定。
因此选择MATLAB 来编程便无可厚非了。
而更重要的是,由于MATALAB 编程简单易行,我们可以很方便的对现有的算法进行改进。
作者在编程的过程中充分体会到了这一优势。
三、程序主框图、子框图及主要数据变量说明
算法说明:
利用节点阻抗矩阵计算短路电流如图所示,假定系统中的节点f 经过过渡阻抗发生短路。
对于正常状态的网络而言,发生短路相当于在故障节点f 增加
了一个注入电流 。
因此,网络中任一节点i 的电压可表示为:
由式可见,任一节点电压i 的电压都由两项叠加而成。
第一项是当 时由网络内所有电源在节点i 产生的电压,也就是短路前瞬间正常运行状态下的节点电压,记为 。
第二项是当网络中所有电流源都断开,电势源都短接时,仅仅由短路电流
在节点i 产生的电压。
这两个分量的叠加,就等于发生短路后节点i 的实际电压,即
∑∈-=G
j f
if j ij
i
I Z I Z
V )0(i
V f
I )0(f I -
公式二
公式二也适用于故障节点f ,于是有
是故障节点f 的自阻抗,也称输入阻抗。
方程式含有两个未知量 ,根据故障的边界条件:
由以上两个方程式解出:
而各节点初始电压 ∑∑∈∈==G
j j
j ij
G
j j ij i z E Z I Z V )
0(
求出
f
I 后,节点i 电压
)0()
0()
0(f f
ff if i
f if i
i V z Z Z V I Z V V +-
=-=
为了得到精确计算结果,本程序计算过程中,使用精确算法。
任一支路的电流
pq
q
p pq z V kV I -=
对于非变压器支路,令k=1即可。
f z
f
f
I
f z
f
有源网络
Z N
f
I f
V
(0)f
V
ff
Z f
ff f f I Z V V -=)0(ff Z f
f I V ,0=-f
f f I z V f
ff f f
z Z V I +=)0(
图一程序主框图
图二程序子流程图
主要数据变量说明:
程序中:
n 节点数
f 短路节点序号
z 任意节点间阻抗矩阵
g_z 发电厂阻抗矩阵
g_v 发电厂电压矩阵
louy 网络漏抗导纳矩阵
Z 网络节点阻抗矩阵
Y 网络节点导纳矩阵
If 短路点电流
V 网络节点电压矩阵 I 网络支路电流矩阵
A 文件导入时存入的矩阵名称
p 发电机阻抗矩阵存放在A 中的行序号,所以p-1就是发电机台数
Q 漏抗导纳矩阵存放在A 中的行序号,所以q-1就是漏抗数
四、三道计算题及网络图
①例题6-3
图三 题6—3电路图
其中3号节点发生三相短路。
输入数据及说明: 节点总数n=5 短路节点序号f=3
输入节点间阻抗矩阵
z= j*
发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)
Inf 0.1050 Inf Inf Inf
0.1050 Inf 0.0650 0.0800 Inf
Inf 0.0650 Inf 0.0500 Inf
Inf 0.0800 0.0500 Inf 0.1840
Inf Inf Inf 0.1840 Inf
g_z=
输出数据及说明: 短路点电流
f I -5.3767
各支路电流矩阵
I= j*
各节点电压矩阵
V=
节点导纳矩阵
Y= j*
节点阻抗矩阵
Z= j*
1 0.1500 1 5 0.2200 1 0 3.2321 0 0 0 -3.2321 0 2.7046 0.5275 0 0
-2.7046 0 -2.6720 0 0 -0.5275 2.6720 0 -2.1445 0 0 0 2.1445 0 0.5152
0.1758
0.1336
0.5282
-16.1905 9.5238 0 0 0 9.5238 -37.4084 15.3846 12.5000 0 0
15.3846 -35.3846 20 0 0 12.5000 20 -37.9348 5.4348 0 0 0 5.4348 -9.9802 0.1181 0.0958 0.0902 0.0858 0.0467 0.0958 0.1629 0.1533 0.1459 0.0794 0.0902 0.1533 0.1860 0.1611 0.0877
0.0858 0.1459 0.1611 0.1729 0.0941 0.0467 0.0794 0.0877 0.0941 0.1515
图四题6—3软件界面显示
图五题6—3输出结果显示
②习题6-10
图六 题6—10电路图
其中节点5发生三相短路
输入数据及说明:
节点总数n=5
短路节点序号f=5
输入节点间阻阵
z= j*
发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)
g_z=
漏导纳矩阵(第一列为漏导纳节点号,第二列为漏导纳数值)
louy=
Inf Inf 0.1050 Inf Inf Inf Inf Inf 0.2100 Inf 0.1050 Inf
Inf 0.4355 0.2904 Inf 0.2100 0.4355 Inf 0.2541 Inf Inf 0.2904 0.2541 Inf 1 0.2300 1.0500 2 0.2800 1.0500 3 0.0309 4 0.0231 5 0.0293
输出数据及说明:
短路点电流
f
I-3.1246 各支路电流矩阵
I= j* 各节点电压矩阵
V=
节点导纳矩阵
Y= j* 节点阻抗矩阵
Z= j*
0 0 -1.7516 0 0
0 0 0 -1.3491 0
1.7516 0 0 -0.1705 -1.5953
0 1.3491 0.1705 0 -1.5310
0 0 1.5953 1.5310 0
0.6471
0.6723
0.4632
0.3890
-13.8716 0 9.5238 0 0
0 -8.3333 0 4.7619 0
9.5238 0 -15.2330 2.2960 3.4440
0 4.7619 2.2960 -10.9647 3.9361
0 0 3.4440 3.9361 -7.3569
0.1819 0.0616 0.1600 0.1079 0.1326
0.0616 0.2078 0.0898 0.1536 0.1242
0.1600 0.0898 0.2330 0.1571 0.1932
0.1079 0.1536 0.1571 0.2689 0.2174
0.1326 0.1242 0.1932 0.2174 0.3427
图七题6—10软件界面显示
图八题6—10输出结果显示
③习题
6-11
图九 题6—11电路图
其中节点3发生三相短路。
输入数据及说明:
节点总数n=3
短路节点序号f=3
输入节点间阻抗矩阵
z= j*
发电机阻抗矩阵(第一列是发电厂节点序号,第二列是发电厂阻抗,第三列为发电厂电压)
g_z=
漏导纳矩阵(第一列为漏导纳节点号,第二列为漏导纳数值)
louy=
输出数据及说明:
短路点电流 f I -9.1875
各支路电流矩阵
Inf 0.2000 Inf 0.2000 Inf
0.1000 Inf 0.1000 Inf 1 0.2000 1.0500 3 0.1500 1.0500 2 0.5000 3 -1
I= j* 各节点电压矩阵
V=
节点导纳矩阵
Y= j* 节点阻抗矩阵
Z= j* 0 -2.0781 0
2.0781 0 -2.1875 0 2.1875 0
0.6344
0.2187
-10 5 0
5 -14.5000 10
0 10 -17.6667
0.1394 0.0789 0.0446 0.0789 0.1577 0.0893 0.0446 0.0893 0.1071
图十题6—11 软件界面显示
图十一题6—11 输出结果显示
五、设计体会
这次电分课设的主题是电力系统短路故障的计算机算法程序设计,我选择了对称短路计算来研究。
经过不懈努力与完善,最终形成的可执行文件可以对各种简单电力网络的对称短路故障进行分析计算,取得了较为满意的效果。
我编写了9个回流函数,分别执行不同的功能:
1.读取函数select_file:读取.csv文件,读取成功有提示。
确定参数矩阵后,在右上侧显示各种已知参数。
各种读取结果申公共。
2.计算函数calculate_start:精确算法,计算完毕将结果显示在右下侧。
各种计算结果申公共。
3.导入函数input1:可任意修改短路点序号、小z矩阵,手动导入过程人性化。
4.导入函数input2:可任意修改发电厂阻抗矩阵。
5.导入函数input3:可以任意修改发电厂电压矩阵。
6.导入函数input3:可以任意修改漏抗导纳矩阵。
通过以上四个导入函数,还能实现不导入文件,完全手动输入所有参数。
7.存储函数save_result_txt:详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。
电力系统分析课程设计是一项很有挑战性的工作。
在选择这个课程设计之前,我就听学长说电力系统分析课程设计的难度,但是为了锻炼自己的能力,我还是迎难而上,选择了电力系统分析的课程设计。
在期末考试结束后,我就开始着手准备课程设计。
经过了再三比较候,我选择了MATLAB作为编程的语言,以前虽然接触过MATLAB,但接触的不深,只是用MATLAB画一些简单的图形之类的,这次用MATLAB语言开发软件,确实有相当大的难度。
从最开始从图书馆借书,上网上查找MATLAB GUI的相关资料,一步步的深入,也开始意识到课程设计的难度所在。
一开始完全无从下手,纠结了好几天完全不知所云,后来在网上找到了MATLAB中文论坛和罗华飞老师编写的MATLABGUI设计学习手记,才开始对MATLAB GUI有一些最初的了解,也许是灵光一闪,就突然对MATLAB GUI设计有了一些感觉,从CSV文档的输入,到手动输入,从将文件读取的计算,在到保存文件为TXT格式,每一步都走得异常苦难,尤其是后期的调试,将各个部分组成一个系统的程序,兼顾各个部分的兼容性,可是说是经历过一次次失败之后才走向成功的。
过程是艰辛的,结果是令人满意的,
大约花了两个星期的时间,我终于将软件成功的设计了出来,在调试成功的那
一刻,我分外高兴,认为自己做了一件特别有意义的事情,回首这段时间,要
感谢老师的悉心指导,一同做课程设计同学的悉心帮助,没有你们,我的课程
设计就不可能完成,在此,像老师和同学们表示感谢。
六、参考文献
(1)、电力系统分析(上册)何仰赞温增银,华中科技大学出版社,2002
(2)、MATLAB GUI设计学习手记罗华飞,北京航空航天大学, 2011
(3)、MATLAB程序设计与应用张智星,清华大学出版社, 2002
(4)、 MATLAB 电力系统设计与分析吴天明,国防工业出版社, 2004
七、附录(主程序及其注释)
1.读取函数select_file:读取.csv文件,读取成功有提示。
确定参数矩阵后,在右上侧显示各种已知参数。
各种读取结果申公共。
2.导入函数input1:可任意修改短路点序号、小z矩阵,手动导入过程人性化。
3.导入函数input2:可任意修改发电厂阻抗矩阵。
4.导入函数input3:可以任意修改发电厂电压矩阵。
5.导入函数input3:可以任意修改漏抗导纳矩阵。
通过以上四个导入函数,还能实现不导入文件,完全手动输入所有参数。
6.计算函数calculate_start:精确算法,计算完毕将结果显示在右下侧。
各种计算结果申公共。
7.存储函数save_result_txt:详细地以文本形式,记录网络参数与短路计算结果,汉字说明与数字结果夹杂混排。
1、文件导入模块:
[filename,pathname]=uigetfile({'*.csv','csv-files(*.csv)'},'选择文件');
if filename==0
msgbox('您未成功选择 .csv文件!','对话框','warn');
return
else msgbox('成功载入!请继续操作!','对话框','help');
end
filename=[pathname,filename];%带有路径的文件名
A=csvread(filename); %从文件中读入各种网络参数
if A(9,1)~=0
imagz=zeros(10,10);
for w=2:10 %以下步骤为确定节点间阻抗矩阵在A中的最大行数
if A(w,1)==0 %如果某元素为0,则减一得到最终值
w=w-1;
break;
end
end
imagz=A(1:w,:);
set(handles.imagz,'Data',imagz);
handles.imagz=imagz;
g_z=zeros(10,10);
g_z=A(7:8,1:2);
set(handles.g_z,'Data',g_z);
handles.g_z=g_z;
g_v=zeros(10,10);
g_v=A(7:8,3:3);
set(handles.g_v,'Data',g_v);
handles.g_v=g_v;
loukang=handles.loukang;
louy=handles.louy;
loukang=zeros(10,10);
if A(11,1)~=0
loukang=A(9:11,1:2);
else
loukang=A(9:10,1:2);
end
set(handles.louy,'Data',loukang);
handles.louy=louy;
handles.loukang=loukang;
else
imagz=zeros(10,10);
for w=2:10 %以下步骤为确定节点间阻抗矩阵在A中的最大行数 if A(w,1)==0 %如果某元素为0,则减一得到最终值
w=w-1;
break;
end
end
imagz=A(1:w,:);
set(handles.imagz,'Data',imagz);
handles.imagz=imagz;
g_z=zeros(10,10);
g_z=A(7:8,1:2);
set(handles.g_z,'Data',g_z);
handles.g_z=g_z;
g_v=zeros(10,10);
g_v=A(7:8,3:3);
set(handles.g_v,'Data',g_v);
handles.g_v=g_v;
loukang=handles.loukang;
louy=handles.louy;
loukang=zeros(1,1);
set(handles.louy,'Data',loukang);
handles.louy=louy;
handles.loukang=loukang;
end
guidata(hObject,handles);
2、手动录入模块:
又细分为四个模块:
(1)、节点间阻抗录入:
imagz=handles.imagz;
A=ones(10,10);
A=str2num(get(handles.edit2,'String')); set(handles.imagz,'Data',A);
z=zeros(10,10);
handles.imagz=imagz; %更新参数矩阵
z=sqrt(-1)*imagz;
handles.z=z;
(2)、发电机阻抗录入
g_z=handles.g_z;
B=ones(10,10);
B=str2num(get(handles.fadian,'String')); set(handles.g_z,'Data',B);
handles.g_z=g_z;
(3)、发电机电压录入
g_v=handles.g_v;
C=ones(10,10);
C=str2num(get(handles.fadianv,'String')); set(handles.g_v,'Data',C);
handles.g_v=g_v;
(4)、节点漏抗导纳录入
louy=handles.louy;
loukang=handles.loukang;
H=ones(10,10);
H=str2num(get(handles.loukang,'String')); set(handles.louy,'Data',H);
handles.louy=louy;
handles.loukang=loukang;
3、计算模块:
j=str2num(get(handles.judge,'String')); if j==1
F=str2num(get(handles.edit2,'String')); z=zeros(10,10);
z=sqrt(-1)*F;
G=zeros(10,10);
G=str2num(get(handles.fadian,'String')); g_z=G;
H=zeros(10,10);
H=str2num(get(handles.fadianv,'String'));
g_v=H;
S=zeros(10,10);
S=str2num(get(handles.loukang,'String'));
loukang=S;
else
imagz=handles.imagz; %读取各类参数
g_z=handles.g_z;
g_v=handles.g_v;
loukang = handles.loukang;
z=sqrt(-1)* imagz;
end
n=str2num(get(handles.jiedian,'String')); %n与f直接从文本框中提取
f=str2num(get(handles.duanludian,'String'));
p=str2num(get(handles.p,'String'));
q=str2num(get(handles.q,'String'));
Y=zeros(n,n); %节点导纳矩阵
V=zeros(1,n); %节点电压矩阵
I=zeros(n,n); %支路电流矩阵
IO=zeros(1,n); %发电机支路电流矩阵
for i=1:n %以下生成节点导纳矩阵
for j=1:n
if z(i,j)~=0
Y(i,i)=Y(i,i)+1/z(i,j);
end
end
end
if q>1 %考虑漏抗导纳影响
for qq=1:q-1
i=loukang( qq ,1);
Y(i,i)=Y(i,i)+sqrt(-1)*loukang(qq,2);
end
end
for pp=1:p-1 %考虑发电机影响
i=g_z(pp,1);
Y(i,i)=Y(i,i)-sqrt(-1)/g_z(pp,2);
IO(i)=-sqrt(-1)*g_v(pp)/g_z(pp,2);
end
for i=1:n %计算非对角线元素
for j=i+1:n
if z(i,j)==0
Y(i,j)=0;
else Y(i,j)=-1/z(i,j);
end
Y(j,i)=Y(i,j);
end
end
Z=inv(Y); %节点阻抗矩阵生成
for i=1:n %计算各节点初始电压
for pp=1:p-1
j=g_z(pp,1);
V(i)=V(i)+Z(i,j)*IO(j);
end
end
If=V(f)/Z(f,f); %计算短路点电流
for i=1:n %计算各节点电压
V(i)=V(i)-If*Z(i,f);
if abs(V(i))<1*10^-6 %对于短路点可以认为其电压为0 V(i)=0;
end
end
for i=1:n %计算各支路电流
for j=1:n
I(i,j)=(V(i)-V(j))/z(i,j);
end
end
Y=imag(Y); %全部求模,便于显示
Z=imag(Z);
If=imag(If);
I=imag(I);
set(handles.If_disp,'String',num2str(If)); %显示电流、电压等结果set(handles.current,'Data',I);
set(handles.voltage,'Data',V');
set(handles.y,'Data',Y);
set(handles.z,'Data',Z);
handles.If=If; %存储,为其他函数调用做准备
handles.I=I;
handles.V=V;
handles.Y=Y;
handles.Z=Z;
guidata(hObject,handles);
4、保存结果模块
保存为txt,有文字注释:
j=str2num(get(handles.judge,'String'));
if j==1
F=str2num(get(handles.edit2,'String'));
imagz=zeros(10,10);
imagz=F;
z=zeros(10,10);
z=sqrt(-1)*F;
G=zeros(10,10);
G=str2num(get(handles.fadian,'String'));
g_z=G;
H=zeros(10,10);
H=str2num(get(handles.fadianv,'String'));
g_v=H;
gg=[g_z g_v];
n=str2num(get(handles.jiedian,'String')); %n与f直接从文本框中提取
f=str2num(get(handles.duanludian,'String'));
p=str2num(get(handles.p,'String'));
q=str2num(get(handles.q,'String'));
If=handles.If;
I=handles.I;
V=handles.V;
Y=handles.Y;
Z=handles.Z;
L=ones(10,10);
L=str2num(get(handles.loukang,'String'));
loukang=L;
else
n=str2num(get(handles.jiedian,'String')); %读取各种网络参数和计算结果
f=str2num(get(handles.duanludian,'String'));
p=str2num(get(handles.p,'String'));
g_z=handles.g_z;
g_v=handles.g_v;
gg=[g_z g_v];
loukang=handles.loukang;
q=str2num(get(handles.q,'String'));
imagz=handles.imagz;
If=handles.If;
I=handles.I;
V=handles.V;
Y=handles.Y;
Z=handles.Z;
end
[filename, pathname] = uiputfile({'*.txt','txt-files(*.txt)'},'保存txt','Result.txt');
if filename==0
msgbox('您未选择保存!','对话框','warn');
return
else msgbox('保存成功!','对话框','help');
end
filename=[pathname,filename];
fid=fopen(filename,'wt'); %获得打开文件的返回值,功能类似于指针fprintf(fid,'%s\n%s %d %s %d \n','网络参数:','①该网络节点数为',n,',短路节点序号为',f);
fprintf(fid,'%s \n%s \n','②发电厂参数为','节点号阻抗值电压值');
for i=1:p-1
fprintf(fid,' %g %6.2f %6.2f \n',gg(i,:));
end
fprintf(fid,'%s \n%s\n','③接地漏抗的导纳为','节点号导纳值');
for i=1:q-1
fprintf(fid,' %g %6.2f \n',loukang(i,:));
end
fprintf(fid,'%s\n','④网络阻抗矩阵');
for i=1:n
for j=1:n
if imagz(i,j)==0
imagz(i,j)=1/0;
end
end
end
for i=1:n
for j=1:n
fprintf(fid,'%6.2f ',imagz(i,j));
end
fprintf(fid,'\n');
end
fprintf(fid,'\n%s\n%s %6.2f\n%s\n','短路计算结果为:','①短路电流大小:If=',If,'②各支路电流I为');
for i=1:n
for j=1:n
fprintf(fid,'%6.2f ',I(i,j));
end
fprintf(fid,'\n');
end
fprintf(fid,'%s\n','③各节点电压V为:');
for i=1:n
fprintf(fid,'%6.2f ',V(i));
end
fprintf(fid,'\n%s\n','④Y矩阵如下');
for i=1:n
for j=1:n
fprintf(fid,'%6.2f ',Y(i,j));
end
fprintf(fid,'\n');
end
fprintf(fid,'%s\n','⑤Z矩阵如下');
for i=1:n
for j=1:n
fprintf(fid,'%6.2f ',Z(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
guidata(hObject,handles);。