实验报告
课程名称:MATLAB 语言 实验名称:MATLAB 数据显示及存取 实验时间:班级: 姓名: 学号:
实验目的:
1. 熟悉MATLAB的二维绘图。
2. 熟悉MATLAB的三维绘图。
3. 熟悉MATLAB的数据保存。
4. 熟悉MATLAB的数据存取。
实验环境:
MATLAB 7.1
实验内容及过程:
1. 绘制函数的曲线,其实曲线为绿虚线,并进行标注。
2. 在一个图形窗口内,绘制任选6个函数的曲线,并增加标题和对坐标轴进行标注。
3. 将第2题得到的曲线按照不同设置拷贝到word文档中,并比较结果。
4. 绘制函数的曲线,并绘制对应的等高线和网格。
5. 将用于绘制曲线的数据分别保存在二进制和文件中。
6. 重启MATLAB,上述保存的文件依次读取变量z的前10个数据。
实 验 过 程、结 果 及 分 析:
第二篇:MATLAB实验报告七
Example5.3
通过创建函数把直角坐标值(x,y)转化相应的极坐标值,我们向大家说选择性参数的
应用。这个函数支持两个输入参数,x 和y。但是,如果支持只有一个参数的情况,那么函
数就假设y 值为0,并使用它进行运算。函数在一般情况下输出量为模与相角(单位为度)。
但只有一个输出参数只有一个时,它只返回模。函数如下所示。
function [mag, angle] = polar_value(x, y)
通过在命令窗口反复调用这个函数来检测它
>> [mag angle]=polar_value??? Error using ==> polar_value
>>Not enough input arguments.
>>[mag angle]=polar_value(1,-1,1)???
>> [mag angle]=polar_value(1,-1)mag =1.4142angle =-45
>> mag = polar_value(1,-1)mag =1.4142
>> [mag angle]=polar_value(1,-1)mag =1.4142angle =-45
>> [mag angle] = polar_value(0,0)Warning: Both x and y are zero: angle is meaningless!
>> In polar_value at 27mag =0angle =0
Example 5.4
随机数发生器是一个函数,当它每一次被调用时,将会返回一个不同的随机出现的数。
事实上,这些数是由一个确定性算法产生的,它们只是表现为随机。但是,如果产生它们的
算法足够复杂,那么应用于模拟中的这些数就足够地随机。
下面是一个简单随机数发生器的算法。它是利用大数求余的不可预知性。考虑下面的等
式。ni+1 = mod(8121ni + 28411, 134456) (5.6)
假设ni 为非负整数,那么由于求余函数的关系,ni+1 只能在0 到13445 之间的整数中进
行取值。重复以上过程,得到的结果永远是在区间[0, 134455]中。如果我们事先不知道8121,
28411 和134456 这三个数你很可能猜测这个顺序是由n 值产生的。进一步说,它说明,所
有在0 到13445 之间的整数出现的次序是等可能性。由于这些属性,等式(5.6)可以当一
个简单的随机数发生器的基础。现在我们用公式(5.6)设计一个随机数发生器,它的输出是一个实数,其取值范围这[0.0, 1.0]。我们要编写一个函数,在每一次调用时,它能产生0≤ran<1.0 的随机数。随机数的产生将依赖于下面的公式。rani=ni/134456通过公式5.6ni,在0 到134455 之间进行取值。公式5.6,5.7 中产生的随机数的顺序取决于n0 的初始值(种子,seed)。我们要为用户提供一种途径,让它用于指定n0,这样每次运行这个函数得到的随机数顺序都是不一样的。
1.陈述问题
编写一个函数random0,使之产生一个数组,数组中包括一个或多个随机数,它的取值范围是0≤ran<1.0,它的顺序由公式5.6 和5.7 指定。函数应当有一个或多个输入参数(n 和m),用来指定返回数组的大小。如果它有一个参数,函数将产生一个n 阶方阵;如果有两个参数,函数将会产生一个n×m 的数组。种子n0 的初始值将会由函数seed 指定。
2.定义输入量和输出量
在这个问题中共有两个函数:seed 和random0。函数seed 的输入是一个整数。这个函数没有输出。random0 的输入量是一个或两个整数。如果它有一个参数,函数将产生一个n 阶方阵;如果有两个参数,函数将会产生一个n×m 的数组。这个函数的输出是由在0.0 和1.0之间的随机数组成的数组
3.定义算法
4.把算法转化为MATLAB 语句
.检测产生的MATLAB 程序
>> seed(1024)
>> random0(4)
ans =
0.0598 1.0000 0.0905 0.2060
0.2620 0.6432 0.6325 0.8392
0.6278 0.5463 0.7551 0.4554
0.3177 0.9105 0.1289 0.6230
>> random0(4)
ans =
0.2266 0.3858 0.5876 0.7880
0.8415 0.9287 0.9855 0.1314
0.0982 0.6585 0.0543 0.4256
0.2387 0.7153 0.2606 0.8922
>> seed(1024)
>> random0(4)
ans =
0.0598 1.0000 0.0905 0.2060
0.2620 0.6432 0.6325 0.8392
5.4 用全局内存分享数据 | 147
0.6278 0.5463 0.7551 0.4554
0.3177 0.9105 0.1289 0.6230
>> random0(2,3)
ans =
0.2266 0.3858 0.5876
0.7880 0.8415 0.9287
>> arr = random0(1,20000);
>> mean(arr)
ans =
0.5020
>> std(arr)
ans =
0.2881
>> hist(arr,10);
>> title('\bf Historygram of the Output of random0');
>> xlabel('Bin')
>> ylabel('Count')
Example 5.5
当我们键入一些变量总想得到他的统计量。MATLAB 内建函数mean 和std 就是进行统计数据运算的。我们对一系列的数利用这两个函数进行运算后,再键入一个新数,重新计算。这时我们就可以利用持久内存提高运算的效率。
标准差则体现随机变量取值与其期望值的偏差。标准差的值较大,则表明该随机变量的取值与其期望值的偏差较大,反之,则表明此偏差较小。如果我们能够记录下样本的个数N,样本的和Σxi 以及样本的平方和Σx2i ,我们在任何的时侯就可以通过公式(5.8)和(5.9)计算出它的平均数和标准差。编写一个程序,计算当前输入数据的当前输入数据的平均数和标准差。
函数必须能够每接受一次输入值并记录下对应的N,Σxi 和Σx2i ,用于计算当前的平均数和标准差。N,Σxi 和Σx2i 必须存储在持久内存中,这样在两次调用之间,它不会消失。最后函数必须有一种机制,把运行的和清零。
1.陈述问题
编写一个程序,计算当前输入数据的当前输入数据的平均数和标准差。函数必须有一种机制,把运行的和清零。
2.定义输入输出值
这个函数需要两种类型的输入量(1)字符型变量“reset”用于N,Σxi 和Σx2i 的清零(2)每一次调用函数用于参与运算的数字类型数据这个函数的输出量为到目前为止函数所接受的所有数字数据的数学期望和平方和。
(3)设计算法这个函数被分为四大步。
(4)把算法转化为MATLAB 代码:
function [ave, std] = runstats(x)
程序得到的结果为:
>> test_runstats
Enter number of values in data set: 5
Enter value 1: 3
Average = 3.0000; Std dev = 0.0000
Enter value 2: 2
Average = 2.5000; Std dev = 0.7071
Enter value 3: 3
Average = 2.6667; Std dev = 0.5774
Enter value 4: 4
Average = 3.0000; Std dev = 0.8165
Enter value 5: 2.8
Average = 2.9600; Std dev = 0.7127
Example 5.6
创建一个函数的函数,它能够画出所有只有一个自变量的MATLAB 函数的图象,自变量的范围是用户指定的始值和终值。这个函数有两个输入参数,第一个是要画的函数的函数名,第二个是两元素向量,它指明了画图的取值范围。
1.陈述问题
创建一个函数的函数,它能够画出所有只有一个自变量的MATLAB 函数的图象,自变量的范围由用户指定。
2.定义输入输出函数的输入有两个(1)包含有函数名的字符串(2)包含有起始值和终值的2 元素向量函数的输出是所要画的图象
3.设计算法这个函数可以分为4 大步:
Check for a legal number of arguments
Check that the second argument has two elements
Calculate the value of the function between the start and stop points
Plot and label the function
4.把算法转化为MATLAB 语句
function quickplot(fun,xlim)
检测程序为了检测这个程序,结果如下:
>> quickplot('sin')
??? Error using ==> quickplot
Not enough input arguments.
>> quickplot('sin', [-2*pi 2*pi], 3)
??? Error using ==> quickplot
Too many input arguments.
>> quickplot('sin', -2*pi)
??? Error using ==> quickplot
Incorrect number of elements in xlim.
>> quickplot('sin', [-2*pi 2*pi])
Example 5.7
在一个单个的文件中我们可以创建多个函数。如果超过 1 个的函数出现在一个文件中,那么最上面的那个函数为普通函数,下面的函数称为子函数或中间函数。子函数看起来和普通函数一样,但是只能被同一文件中的函数调用。
下面的例子定义了一个函数mystats 和两个子函数mean 和median。函数mystats 能被其
他的maltab 函数调用,但是子函数mean 和median 只能同一文件中的其他函数调用。
function [avg, med] = mystats(u)