您的位置:首页 > 编程语言 > MATLAB

matlab 分解矩阵值到数组 [李园7舍_404]

2012-11-13 14:50 357 查看
1.问题描述

在使用matlab编程时,有时需要用像C语言中数组一类的数据类型来存储数据。就一维数组而言,它相当于矩阵的一行或者一列。那么如何得到一个一行的数组变量呢?(一列数组a=a'(一行数组))

如在实际生活中一个系统有三个储能单元,我们现在要分别绘制这个三个储能单元的能量随时间变化的曲线。而我们一般都是采用矩阵计算系统输出与输入的关系,若要用简单绘图命令plot来绘制此三个储能单元能量能量随时间的变化曲线时,我们需要用到每个储能单元在每个时刻的能量值(数值算法),如此我们就能用plot函数来绘制每个储能单元能量随时间变化的曲线,供我们更为直观的理解。

通过某种算法,如(龙格-库塔法)在 t 时刻时,矩阵A(为3 x 1的列矩阵)中元素数值表示系统三个储能单元所对应在 t 时刻的能量值,第一个储能单元x1的能量值为矩阵A中的第一个元素值A(1, 1),储能单元x2的能量值为矩阵A的第二个列元素A(2, 1), 储能单元x3的能量值为矩阵A的第三个元素值A(3, 1)。根据算法,每推移一个时间点(t + 1时刻时),矩阵A又能同时反映系统三个储能单元的能量值。我的任务就是记录下所设定的时间点上储能单元x1、x2、x3所有的能量值,到规定的时间之后,数组x1,x2,x3中每个元素所存的值为t0,
t1, t2, ..., tn时刻对应的能量值。然后用plot命令让时间作为自变量,以xi(i = 1, 2, 3)作为因变量,从而得到每个储能单元能量随时间变化的能量变化曲线。



2.为实现上面目标,具体做法如下

确定数值算法中选取时间点的个数,以确定数组的大小

x1=lower_limit:step:upper_limit;

x2=lower_limit:step:upper_limit;

x3=lower_limit:step:upper_limit;

lower_limit表示x1第一个元素的值,step表示步长,x(i + 1)==x(i) + step, upper_limit表示x数组元素值的取值上限(数组元素值下一个元素每次都在上一个数组元素值上面增加step),这样不仅给数组赋了值,也确定了各数组的空间大小。

用定义的数组获取在每个时间点上面的能量值

j=0;

for i=lower_limit:step:upper_limit

.......计算A的表示;



%取各自在时刻 i 的能量值

x1(j)=A(1, 1);

x2(j)=A(2, 1);

x3(j)=A(3, 1);



.....其它语句处理;

end

在此for循环结束之后,储能单元变量x数组中保存到了每一个时刻的能量值,故用描点发就能画出相应储能单元能量随时间变化的曲线图。



3.分享

以下是经龙格-库塔法求解系统由初始状态值引起的系统能量变化的曲线图:





图1.分解矩阵元素得到所求解物理系统各单元能量变化的曲线变化图


此次笔记记录完毕。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: