利用Matlab拟合时序植被生长季曲线,并求解物候参数
2015-10-29 09:47
1671 查看
如下图所示,为经HANTS谐波分析后的单个像元处植被生长季曲线,现在用一个一元六次多项式来拟合曲线,并求解物候参数(始期、末期),在Matlab中编程实现:
代码:
Year0=zeros(38998,1);
for i=1:1:38998
if M(i,:)==0
continue;
end
corrcoficent=polyfit(x,M(i,:),6);
N=[corrcoficent(1),corrcoficent(2),corrcoficent(3),corrcoficent(4),corrcoficent(5),corrcoficent(6),corrcoficent(7)-shreold(i)];
year=roots(N);
for j=1:1:6
if isreal(year(j)) && year(j)>210 && year(j)<360
Year0(i)=year(j);
end
end
fprintf(num2str(i));fprintf('\n');
end
fprintf('\n');
fprintf('Done');代码解释:
思路:通过已有影像的38998个像元值,建立一元六次多项式,并获取系数,从而得到一元六次多项式的具体表达式,再通过在曲线上选取物候阈值(Excel中求取的动态阈值)所对应的天数来逐行(逐像元)反解物候期所对应的天数。
1、Year0=zeros(38998,1):声明一个38998行1列的数组
2、corrcoficent=polyfit(x,M(i,:),6):获取系数
3、N:六个根
4、Year0里面保存最后结果
代码:
Year0=zeros(38998,1);
for i=1:1:38998
if M(i,:)==0
continue;
end
corrcoficent=polyfit(x,M(i,:),6);
N=[corrcoficent(1),corrcoficent(2),corrcoficent(3),corrcoficent(4),corrcoficent(5),corrcoficent(6),corrcoficent(7)-shreold(i)];
year=roots(N);
for j=1:1:6
if isreal(year(j)) && year(j)>210 && year(j)<360
Year0(i)=year(j);
end
end
fprintf(num2str(i));fprintf('\n');
end
fprintf('\n');
fprintf('Done');代码解释:
思路:通过已有影像的38998个像元值,建立一元六次多项式,并获取系数,从而得到一元六次多项式的具体表达式,再通过在曲线上选取物候阈值(Excel中求取的动态阈值)所对应的天数来逐行(逐像元)反解物候期所对应的天数。
1、Year0=zeros(38998,1):声明一个38998行1列的数组
2、corrcoficent=polyfit(x,M(i,:),6):获取系数
3、N:六个根
4、Year0里面保存最后结果
相关文章推荐
- 在MATLAB下调试Caffe
- Matlab实现Hough直线检测
- 高斯混合模型(matlab代码+注释)
- 使用MATLAB遍历指定的子文件夹及其下文件
- 精确径向基(matlab工具箱)
- matlab程序移植到C(输出比较)
- Matlab 调用 C# dll
- c#向MATLAB传递字符串数组
- matlab绘制带有吴茶邦(error)的分组柱状图
- 使用matlab读取excel数据并保存
- Matlab boxplot for Multiple Groups(多组数据的箱线图)
- 使用matlab画不同填充图案的柱状图
- Matlab梯度下降及正规方程实现多变量的线性回归
- Matlab数值计算
- matlab的.dat文件读取
- 我的文件夹下面有汉字的路径,matlab 不识别
- papa的儿子 matlab plot3 color peaks
- 归并排序算法Matlab实现
- 【kate总结】matlab调用opencv出错总结
- 11.16 Matlab 生成可执行文件