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.分解矩阵元素得到所求解物理系统各单元能量变化的曲线变化图
此次笔记记录完毕。
相关文章推荐
- matlab矩阵及其基本运算—特征值分解和奇异值分解
- matlab program components 之 数组和矩阵
- Matlab 实现矩阵的满秩分解(最大秩分解)
- matlab中的数组与矩阵
- Matlab教程1_矩阵(数组) _ 多元数组
- 【matlab】练习2:矩阵和数组的一般操作
- matlab矩阵分解
- matlab 数组与矩阵
- matlab 矩阵分解
- Matlab教程1_矩阵(数组) _ 二维数组的创建
- matlab cftool用法及其菜单 [李园7舍_404]
- Matlab与线性代数 -- 数组与矩阵的乘幂
- matlab 数组矩阵基本运算
- Matlab梯度下降解决评分矩阵分解
- MATLAB中矩阵与数组的区别,点运算符的运用
- matlab 编写M文件(函数) [李园7舍_404]
- Matlab教程1_矩阵(数组) _ 一维数组的创建
- Matlab练习——矩阵和数组的操作
- 51 线反转法 实现矩阵键盘检测 [李园7舍_404]
- Matlab数组与矩阵