求大神编matlab写程序

求大神编matlab写程序,第1张

循环体被执行四次,重点看循环体语句“Output=[Outputeval([Expression{i},'(',num2str(Num),')'])]”这里有两部分:1、Output=[OutputXXX],这里的中括号表示做行方向上的拼接(省略了逗号,实际可以写成 [Output,XXX])。举例自己体会一下:a = []b = [1 23 4]a = [a b]c = [5 67 8]a = [a c]输出:a = 1 2 3 4a = 1 2 5 6 3 4 7 8所以这一部分代码表示不断将XXX拼接到Output的后面。备注:[Output,XXX]表示行方向上的拼接(可省略逗号,用空格隔开)[OutputXXX]表示列方向上的拼接(分号不能省略)注意逗号和分号的区别。2、eval([Expression{i},'(',num2str(Num),')'])eval函数的功能是将一个字符串等价转换为一个对应可执行的matlab语句,举例:a = 3eval('b=4')输出:a = 3b = 4可以发现第二句实际上就是执行一句MATLAB语句,即b=4。回头来看看表达式[Expression{i},'(',num2str(Num),')'],只看i为1的时候,这句相当于是['zeros','(',num2str(Num),')']上面提到中括号内用逗号隔开是做行方向上的拼接,故中括号里面都是字符串时,实际上就是做字符串的拼接。所以i为1时,这个字符串是“zeros(2)”。因此,可以看到这里随着i的变化,产生了四个字符串,即:'zeros(2)''ones(2)''rand(2)''magic(2)'然后调用evaleval('zeros(2)') -->等价于MATLAB语句zeros(2)eval('ones(2)') -->等价于MATLAB语句ones(2)eval('rand(2)') -->等价于MATLAB语句rand(2)eval('magic(2)') -->等价于MATLAB语句magic(2)这下可以理解了吧,这个循环体实际上使用MATLAB自带的矩阵函数,生成了4个特殊矩阵,每个矩阵都是2x2的,最后把这4个2x2的矩阵在行方向上拼接到一起。故最后结果是一个2x8的矩阵。

Matlab通用性强,模块较多。你可能使用到的也就simulink中的一部分而已,模块不够精确,做控制策略研究,对微网也足够。

PSCAD较为针对电气电路的仿真,开关过程的细节仿真更为清晰,研究谐波、动态过程相对更适合,对于开关过程可建模。

DigSilent相对是系统级的仿真,变换器都是模块化封装好的,对于系统级长时间的仿真较适合。

但是,无论那款软件,都可以验证微网中你需要的控制策略。关键你建立的模型是否有一定的等效性。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12080195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存