MATLAB循环对矩阵中数据进行插值

1. 背景介绍

对1号池的属性进行建模,但由于缺少偶数周的数据,因此需要利用奇数周的数据,再进行插值操作,得到更全的数据

在这里插入图片描述
最终结果:
在这里插入图片描述
最后把生成的数据填入就行

2. 基本函数功能

1.1三次样条插值函数介绍

pchip(x,y,'b*',new_x,y,'r-');

前面的是原先的样本点,后面那个是需要的

1.2 matlab中取某行数据

p = C(1,:);

原矩阵C的数据
调用p=C(1,:)后
总之,取哪行,就把数字改成几,第二行就是二,因此我们很容易用到for循环对每行数据的插值

对整个矩阵进行三次样条插值

代码如下

%对1号水池进行的插值操作
clear;clc;
load mydata.mat;%这个是导入数据,mydata只是名字,要调用还是得知道里面的矩阵
[n,m] = size(C);%C的行数和列数
P = zeros(11,15);%经常用zeros函数生成一个空的矩阵
ylab={'周数','轮虫','溶氧','COD','水温','PH值','盐度','透明度','总碱度','氯离子','透明度','生物量'};
%ylab是坐标的名字,用于后面的循环调用
x = [1 3 5 7 9 11 13 15];%这个是原先x的坐标
for i = 1:n%对每行进行for循环
    new_x = 1:15;%每个变量都需要插值
    y = C(i,:);%对原先的数据进行一行一行的插值
    p1 = pchip(x,y,new_x);%三次埃尔米特插值
    subplot(4,3,i);%对于每个变量,画一张图,生成在4*3的矩阵中,并对图进行标号
    plot(x,y,'b*',new_x,p1,'r');%plot函数用于把图画在subplot中
    ylabel(ylab{i+1});%ylabel形成每个plot的y轴图像
    P(i,:) = p1;%将每一个插值后的接到新的空白矩阵中
end
P=[1:15;P];%加上周数
legend('原样本点','三次样条插值','location','southeast');%
p = C(1,:);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值