数模的matlab自学准备阶段

来源:互联网 发布:淘宝卖水果只做本地 编辑:程序博客网 时间:2024/06/05 05:12

读入数据

MATLAB与Excel link

将.xlsx文件放入Matlab运行目录下
命令:[NUM,TXT,RAW]=xlsread(‘example’)
- NUM返回的是excel中的数据,TXT输出的是文本内容,RAW输出的是未处理数据,这里因为文本占用的矩阵一共是8行6列,所以就输出了如上内容。一般情况下,我们读取的都是excel中的数据,所以可以直接用[NUM]=xlsread(‘example’),只输出数据矩阵便可。
- 假如我们想读取第二个sheet中的数据,这里请注意:matlab读取excel中的数据是按照sheet在excel中的排放顺序来的,sheet3现在排在第二位,我们输入命令[NUM]=xlsread(‘example’,2),回车
- 指定单元格数据,假设我们读取A3-D7之间的数据,那么我们输入命令[NUM]=xlsread(‘example’,2,’A3:D7’),回车

记事本与matlab的数据交互

在MATLAB当前目录下新建一个txt文本,当记事本中记录的全都是数据时,我们可以用load函数。

A = load(‘myExample.txt’); %引号里为txt文本名字
A
A =
1 2 3 4 5 6 7 8 9

当记事本中的数据变的复杂时,就不能用load函数了,此时textread函数是好的选择。

[name,score,sex] = textread(‘myExample.txt’,’%s %n %s’,3)
%第一个引号内为txt文件名字,第二个引号内为数据格式,数字3是读取次数

将MATLAB数据写入记事本中

如果要保存MATLAB工作空间中的数据,可以用save命令,但保存文件为M文件,用户无法直接查看,现在我们来将数据保存为txt文档。在这里,我们要用到fprintf函数。

fid = fopen('class.txt','wt');name = 'Xiaoli';score = 98;sex = 'man';fprintf(fid,'%s %u %s\n',name,score,sex);name = 'Xiaowang';score = 99;sex = 'man';fprintf(fid,'%s %u %s\n',name,score,sex);name = 'Xiaohong';score = 100;sex = 'women';fprintf(fid,'%s %u %s\n',name,score,sex);fclose(fid);
  • 在你的MATLAB当前目录下,就会看见一个class.txt文本。打开class.txt文本,将会看到MATLAB中的数据保存到txt文本中去了。
  • 注意:MATLAB命令必须是在英文状态下输入的,并且两个数据是用空格分开的。
  • %u表示十进制数,另外还有很多格式,用时请参阅Help中的fprint以及其下的formatting strings.
  • 在这里还要注意,不能用函数textread读取后再用函数fprint进行写操作。这是因为函数textread读取数据后保存为cell结构,而函数fprintf不能进行cell结构数据的写操作。

多项式拟合

polyfit(X,Y,N):多项式拟合,返回降幂排列的多项式系数。
polyval(P,xi):计算多项式的值。

  • 其中,X,Y是数据点的值;N是拟合的最高次幂;P是返回的多项式系数;xi是要求的点的横坐标。
  • y1=polyfit(x,y,N),这里函数polyfit第一个参数传递的是拟合数据的自变量,第二个参数是因变量,第三个参数是拟合多项式的阶数,这个由我们给定。如下图。我们可以给定不同的N,运用不同的多项式进行拟合。

运行结果:
这里写图片描述

拟合多项式的显示:
在MATLAB主窗口中输入
syms x f(x)
f(x)=poly2sym(y2,x)
我们会看到输出如下结果:

f(x) =4*x^3 + 3*x^2 +(5822273280258613*x)/1267650600228229401496703205376 + 2

这就是我们拟合出来的多项式。给定误差范围,拟合多项式阶数的确定(给出两种方法可参考):
http://jingyan.baidu.com/article/9c69d48f409c6013c9024e8c.html

1 0