目录
- 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)];
else
xnnull = [xnnull, num(i, 1)];
ynnull = [ynnull, num(i, 2)];
end
end
xnnull
ynnull
xnull
结果:
5.2插值:
新建一个名叫Lagrange.m的脚本即可,用于放函数定义:(这是别人写好的代码,借鉴的别的博主的)
function y0 = Lagrange(x,f,x0)
y0 = [];
%得出数据点的个数
n = length(x) ;
%得出插值点的个数
m = length(x0);
for i = 1:m
D = x0(i);
y = 0.0;
for k = 1:n
%置l(x)的初值
l = 1.0;
for j = 1:n
%迭代表示出l(xj)
%记住,第k个是取不到的!!!!
if j~=k
l = l*(D-x(j))/(x(k)-x(j));
end
end
%Pn(x)
y = y + l*f(k);
end
xx = 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, :), '.-') % 绘制带点的线图
结果:
小结:
关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
由于本号流量还不足以发表推广,搜我的公众号即可: