实验三矩阵的创建及使用
一、实验目的
1.学会多种手段创建向量、数组;
2.灵活应用数组的寻访方式;
3.熟练掌握数组运算和数组化、矩阵化编程;
4.学习关系和逻辑操作。
二、实验任务
1.要求在闭区间]
3,0[π上产生具有16个等距采样点的一维数组。
试用两种不同的指令实现。
(提示:冒号生成法,定点生成法)
2.要求创建5*5的元素全部是1的矩阵,尝试尽量多的方法。
如直接输入、函数产生、编辑workspace、编辑M文件、使用repmat等。
3.在时间区间[0,10]中,绘制t
=曲线。
要求分别采取“标量
15.0-
-
e
y t2
cos
循环运算法”和“数组运算法”编写两段程序绘图。
(注意:体验数组运算的简捷。
)
提示:
(1)标量循环运算法可以参考例3.3-3非数组化编程技术,即使用
for jj=
end
的循环方式。
(2)数组编程时特别要注意. 的用法。
(3)在非向量化编程时,好的习惯是在进入for之内的循环前,把结果数组先定义好,这样进入循环后不会频繁地生成新数组,拷贝原来数组内容,删除原来数组。
这个过程虽然我们不会注意到,但这个过程必然发生,动态扩充数组非常耗时间。
好的习惯比如:
M=10; N=10;
A=zeros(M,N)
for m=1:M
for n=1:N
A(m,n)=…
end
end
再例如:
A=1:0.2:10;
L= length(A);
B=zeros(1,L)
for t=1: L
B(t)=…
end
4.已知A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15],编程实现提取A的第二行、提取A的第二列和第四列、提取A的第2行,第4列元素、提取A的第6个元素、将A中大于6的元素置成0、删除A的第一行和第三行、删除A的第二列
的指令,并写出运行结果。
5.使用rand 指令生成4×5大小的均匀分布随机数组A ,将A 中所有大于
0.6的元素的值置为5,其余元素的值置为10。
6.下面有一段程序,企图用来解决如下计算任务:有矩阵
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡++++=k k k k k k k k 10229221911 A ,当k 依次取10, 9, 8, 7, 6, 5, 4, 3, 2, 1时,计算矩阵k A “各列元素的和”,并把此求和结果存放为矩阵Sa 的第k 行。
例如3=k 时,
A 阵为⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡306329522841 ,此时它各列元素的和是一个)101(⨯行数组[]87156 ,并把它保存为Sa 的第3行。
仔细观察以下程序运行后所得到
的Sa 正确吗?假如计算结果不正确,请指出错误发生的根源,并改正之。
for k=10:-1:1;
A=reshape(1:10*k,k,10);
Sa(k,:)=sum(A);
end;
Sa
提示:本题专为揭示sum 对行数组的作用而设计。
练习时,可先不循环,即不
执行k=10:-1:1的循环;而是假定k 为一个值,查看结果。
例如执行下面四行
语句:
k=10
A=reshape(1:10*k,k,10)
Sum_A=sum(A)
Sa(k,:)= Sum_A
再执行
k=9
A=reshape(1:10*k,k,10)
Sum_A=sum(A)
Sa(k,:)= Sum_A
以此类推,直至最后执行
k=1
A=reshape(1:10*k,k,10)
Sum_A=sum(A)
Sa(k,:)= Sum_A
至此,发现问题了吗?
7.已知A=magic(3),B=rand(3),请回答以下问题:
(1)A.*B和B.*A的运行结果相同吗?请说出理由。
(2)A*B和A.*B的运行结果相同吗?请说出理由。
(3)A*B和B*A的运行结果相同吗?请说出理由。
(4)A.\B和B./A的运行结果相同吗?请说出理由。
(5)A\B和B/A的运行结果相同吗?请说出理由。
(6)A*A\B-B和A*(A\B)-B的运行结果相同吗?它们中哪个结果的元素都十分接近于0?
(7)A\eye(3)和eye(3)/A的运行结果相同吗?为什么?
8.先运行以下指令
a=0;b=pi;
t1=a:pi/9:pi;
t2=linspace(a,b,10);
T=t1*t2';
F=find(T<0);
然后,请回答变量a、t1、T、F的维度、规模、长度分别是多少?t1完全等于t2吗?为什么?
9.对于指令A=reshape(1:18,3,6)产生的数组
A =
1 4 7 10 13 16
2 5 8 11 14 17
3 6 9 12 15 18
先请你用一条指令,使A数组中取值为1、3、5、7、9的元素都被重新赋值为NaN。
然后,再请你用一条指令,把A数组的第1、3两行元素都被重新赋值为Inf。
10.练习书上的例题3.1-1、3.1-2、3.1-5、3.1-6、3.2-1、3.3-1、3.3-2(1)(-3)、3.3-3、3.4-1和3.4-2(4)。
三、实验报告要求
1.说明生成2维矩阵大体上有哪些方法,在大矩阵生成录入上哪些方法比较便利。
2.数组计算有哪些特点?
3.写出任务1、2、3、4、5、6、9的程序,写出任务7和任务8的结果。