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

来源:互联网 发布:js输入框自动计算 编辑:程序博客网 时间:2024/05/17 22:46
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.分解矩阵元素得到所求解物理系统各单元能量变化的曲线变化图

 

 此次笔记记录完毕。

原创粉丝点击