0
点赞
收藏
分享

微信扫一扫

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)

结果:

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

2.注释快捷键:

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

3.数组/矩阵索引:

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

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

例如:

num(:, 1)

结果:

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

4.绘制散点图:

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

例如:

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

结果:

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

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

结果:

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

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);

结果:

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

5.3画图:

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

ynull = Lagrange(xnnull,ynnull,xnull);

结果:

matlab快速入门(读取数据并绘制散点图和拉格朗日插值_开发语言_06

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

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

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

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

结果:

matlab快速入门(读取数据并绘制散点图和拉格朗日插值_开发语言_07

小结:

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


举报

相关推荐

0 条评论