Matlab 绘图实验报告
楼宇11301 11034700徐齐敏
1. 实验目的:matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的,所以必须熟练地掌握matlab绘图。
2. 实验环境:matlab软件,机房。
3. 实验步骤:
例1.以向量y=(1,2,5,4.5,3,6,1)的各个分量为纵坐标,分量序号为横坐标绘制顺序连接线。
解:输入命令
>> y=[1 2 5 4.5 3 6 1];
>> plot(y)
例2.画出一条正弦曲线和一条余弦曲线。
>>x=0:pi/10:2*pi; %构造向量
>>y1=sin(x); %构造对应的y1坐标
>>y2=cos(x); %构造对应的y2坐标
>>plot(x,y1,x,y2) %画出一个以x为横坐标,y1,
y2为纵坐标的图形
例3.绘制函数f(x)=cos(tan(πx))的曲线。
解:
>> fplot('cos(tan(pi*x))',[-0.4,1.4])
>>
例5.某次考试学生成绩优秀的占8%,良好的占20%,中等的占36%,及格的占24%,不及格的占12%。分别用饼图和条形图表示。
解:
>> x=[8 20 36 24 12];
>> subplot(221);pie(x,[1 0 0 0 1]);
>> title('饼图');
>> subplot(222);bar(x,'group');
>> title('垂直条形图');
>> subplot(223);bar(x,'stack');
>> title('累加值为纵坐标的垂直条形图');
>> subplot(224);barh(x,'group');
>> title('水平条形图');
例6.用红色、点连线、叉号画出正弦曲线。
>>x=0:0.2:8;
>>y=sin(x);
>>plot(x,y,'r:x')
绘制多峰函数图。
>>z=peaks(40);
>>mesh(z);
>>surf(z);
4. 实验总结:基本的绘图函数有 plot, plot3, mesh, surf。绘图功能强大,需要多加探索。与高数联系紧密。
第二篇:matlab稀疏矩阵
matlab稀疏矩阵存储
在做detrend时,碰到了稀疏矩阵的问题,以前学习时没有好好搞懂,模模糊糊的,在论坛上搜了一下相关的内容不多的,呵呵,所以翻出了大二的教材,感觉介绍的还是很详细的,分享一下:
---------------------------摘自张卫国《MATLAB程序设计与应用(第二版)》
--------------------------------------------------------------------------
---------------------------有所改动
-------------------------------------------------------------------------------------------------------------------------------
1.1.1矩阵存储方式
MATLAB的矩阵有两种存储方式,完全存储方式和稀疏存储方式
1.完全存储方式
将矩阵的全部元素按列存储,矩阵中的全部零元素也存储到矩阵中。
2.稀疏存储方式
仅存储矩阵所有的非零元素的值及其位置,即行号和列号,显然这对于具有大量零元素的稀疏矩阵来说是十分有效的。
设
1 0 0 0
A= 0 5 0 0
2 0 0 7
是具有稀疏矩阵特征的矩阵,其完全存储方式是按列存储的全部12个元素
1,0,2,0,5,0,0,0,0,0,0,7
其稀疏存储方式如下:
(1,1),1,(3,1),2,(2,2),5,(3,4),7
括号内为元素的行列位置,后面为元素值。
当矩阵非常的“稀疏”时,会有效的节省存储空间。
1.1.2稀疏存储方式的产生
1.将完全存储方式转化为稀疏存储方式
A=sparse(S);将S矩阵转换为稀疏矩阵A;
sparse(m,n);产生m*n的所有元素都为0的稀疏矩阵
sparse(u,v,S);S为建立系数矩阵的非零元素,u(i),v(i)分别为S(i)的行和列下标,S,u,v为等长向量。
[u,v,S]=find(A);返回矩阵A中非零元素的下标和元素,返回值可以作
为sparse(u,v,S);的参数
full(A);返回和稀疏存储方式A对应的完全存储方式。
例如
X=[2,0,0,0,0;0,0,0,0,0;0,0,0,5,0;0,1,0,0,-1;0,0,0,0,-5]
A=sparse(X)
A=
(1,1) 2
(4,2) 1
(3,4) 5
(4,5) -1
(5,5) -5
A就是X的稀疏存储方式。
2.产生稀疏存储矩阵
sparse可以讲完全存储方式转换为稀疏存储方式,那么,当使用稀疏矩阵时,要先产生完全存储方式的矩阵,然后再转换,这显然是不可取的,MATLAB有自己产生稀疏矩阵的函数spconvert:
B=spconvert(A);A为一个m*3或m*4的矩阵,A的每一列的意义分别为:
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的实部
(i,4)第i非零元素的虚部
3.带状稀疏存储矩阵
举个例子:
是一个具有稀疏性质的带状矩阵。
首先,找出矩阵的特征数据:
B为三条对角线元素,d为对角线号,-3为主对角线下第三条,0为主对角线,3为主对角线上第三条。
可以利用spdiags产生稀疏矩阵
A=spdiags(B,d,5,6);
也就是spdiags的调用格式
A=spdiags(B,d,m,n);
B为r*p阶矩阵,r=min(m,n),p为原带状矩阵中所有非零对角线的条数,B的第i列即为原带状矩阵的第i条非零对角线。
spdiags的其他调用格式:
[B.d]=spdiags(A);从原带状矩阵提取全部对角线元素赋给B并把对角线位置赋给d;
B=spdiags(A,d);从带状矩阵中提取由d指定的非零对角线元素构成的矩阵;
E=spdiags(B,d,A);将A中d指定的对角线元素由B代替构成新矩阵E。
4.单位矩阵的稀疏矩阵
speye(m,n);产生m*n的稀疏存储单位阵。