matlab快速入门(读取数据并绘制散点图和拉格朗日插值

目录

  • 1.读取excel:
  • 2.注释快捷键:
  • 3.数组/矩阵索引:
  • 4.绘制散点图:
  • 5.拉格朗日插值:
      • 5.1分割出非空和空的x和y两组数据:
      • 5.2插值:
      • 5.3画图:
  • 小结:

1.读取excel:

[num,txt,raw]=xlsread(<路径>, [<第几张表>, <范围>])

num返回的是excel中的数据矩阵,txt输出的是文本内容,raw输出的是未处理数据
后两项参数可以选择不放
例如:(我们一般只要num)

[num]=xlsread('D:\系统默认\桌面\数据可视化作业\1 课设\土地利用情况.xlsx', 2)

结果:
在这里插入图片描述

2.注释快捷键:

添加注释:选中要注释的语句,快捷键:ctrl+r
取消注释:选中要取消的语句,快捷键:ctrl+t

3.数组/矩阵索引:

Matlab 中的数组索引是从 1 开始的,因此使用索引 0 是无效的。
索引使用的和其他语言不一样,matlab使用的是中括号
以下是对矩阵行和列的索引

A(i,:) %提取矩阵A的第 i 行
A(:,i%提取矩阵A的第 i 列

例如:

num(:, 1)

结果:
在这里插入图片描述

4.绘制散点图:

scatter(x, y)	% x 和 y 必须是长度相等的向量
% 该类型的图形也称为气泡图

例如:

scatter(num(:, 1), num(:, 2))

结果:
在这里插入图片描述

5.拉格朗日插值:

5.1分割出非空和空的x和y两组数据:

这里用到了循环和条件语句

例如:

xnnull = [];
ynnull = [];xnull = [];for i = 1: size(num, 1)if isnan(num(i, 2))xnull = [xnull, num(i, 1)];elsexnnull = [xnnull, num(i, 1)];ynnull = [ynnull, num(i, 2)];end
endxnnull
ynnull
xnull

结果:
在这里插入图片描述

5.2插值:

新建一个名叫Lagrange.m的脚本即可,用于放函数定义:(这是别人写好的代码,借鉴的别的博主的)

function y0 = Lagrange(x,f,x0)
y0 = [];
%得出数据点的个数
n = length(x) ;
%得出插值点的个数
m = length(x0);for i = 1:mD = x0(i);y = 0.0;for k = 1:n%置l(x)的初值l = 1.0;for j = 1:n%迭代表示出l(xj)%记住,第k个是取不到的!!!!if j~=kl = l*(D-x(j))/(x(k)-x(j));endend%Pn(x)y = y + l*f(k);endxx = num2str(D,'%.4f');y0 = [y0, y];y =num2str(y,'%.4f');disp('f(x)的近似值点坐标为:');disp(['(',xx,',',y,')']);end
end

例如:

Lagrange(xnnull,ynnull,xnull);

结果:
在这里插入图片描述

5.3画图:

例如:(获取到返回值,得到的是插值的结果矩阵)

ynull = Lagrange(xnnull,ynnull,xnull);

结果:
在这里插入图片描述

然后把这两组xy拼起来画连线图

plot(x,y)	% 放入xy即可

但是,我们这是还需要排序一下x和y,再画图:
例如:

% 先合并成两行
C = [[xnnull, xnull]; [ynnull, ynull]];
% 按第一行排序,这里要用到转置
C = sortrows(C.', 1).';
% 画图
plot(C(1, :), C(2, :), '.-')	% 绘制带点的线图

结果:
在这里插入图片描述

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
由于本号流量还不足以发表推广,搜我的公众号即可:
在这里插入图片描述