楼主: kainan001

[已答复] 如何使用matlab实现SPA连续投影算法

[复制链接]

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-10-24 21:23:34 | 显示全部楼层
912066249 发表于 2019-6-26 17:11
请问下你解决这个问题了吗?或者找到新的SPA算法代码了吗?

咋整嘞,求赐教

新手

5 麦片

财富积分


050


0

主题

6

帖子

0

最佳答案
发表于 2019-10-28 15:48:05 | 显示全部楼层
912066249 发表于 2019-6-26 17:11
请问下你解决这个问题了吗?或者找到新的SPA算法代码了吗?

朋友,你解决了嘛

新手

11 麦片

财富积分


050


4

主题

29

帖子

0

最佳答案
  • 关注者: 1
发表于 2019-11-12 23:47:47 | 显示全部楼层
912066249 发表于 2019-6-26 17:11
请问下你解决这个问题了吗?或者找到新的SPA算法代码了吗?

问题解决了,这个SPA可以用,通常是直接调用spa()函数。

这个函数中,xcal是光谱的建模集数据,行为样本,列为波段,这么放;ycal是样本指标,是一列数值;剩下val是验证集,xval是光谱数据的,yval是样本指标,数据摆放方法和cal系列一样。xval和yval可以是空矩阵[]。
然后是m_min和m_max,分别代表筛选波段数量的区间,函数筛选的波段数量在[m_min,m_max]之间,autoscaling选1(yes)和0(no)都可以,我用的1,跑出来了,建模效果不错,就没试0。

下面是函数调用:
clc;clear;close all;%素质三连
load testlts.m;%调用数据包,包中matrix对应的是X,label对应的是Y,数据按上述方法摆放,没有放验证集。
Xcal = matrix;ycal = label;yval = [];Xval = [];%更名以适应函数,所有数据设置到建模集,验证集设置为空集,它会调用validation函数用交叉验证的方法划分建模集和验证集。交叉验证的时间要很久,推荐手动分,方便测试。
[var_sel,var_sel_phase2] = spa(Xcal,ycal,Xval,yval,5,30,1)%调用函数

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-11-25 17:30:21 | 显示全部楼层
野猫子夜猫子 发表于 2019-11-12 23:47
问题解决了,这个SPA可以用,通常是直接调用spa()函数。

这个函数中,xcal是光谱的建模集数据,行为样 ...

testlts.m  是哪个啊,我这边下载的怎么没有

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
  • 关注者: 2
发表于 2019-11-29 22:35:58 | 显示全部楼层
RANGERi 发表于 2019-11-25 17:30
testlts.m  是哪个啊,我这边下载的怎么没有

我已经运行了,但是提示我超出数组范围,能否帮忙解决一下,谢谢
微信截图_20191129223410.png

新手

11 麦片

财富积分


050


4

主题

29

帖子

0

最佳答案
  • 关注者: 1
发表于 2019-12-2 17:04:24 | 显示全部楼层
RANGERi 发表于 2019-11-25 17:30
testlts.m  是哪个啊,我这边下载的怎么没有

testlts.m是我自己的数据,数据摆放和上面讲的一样的

新手

11 麦片

财富积分


050


4

主题

29

帖子

0

最佳答案
  • 关注者: 1
发表于 2019-12-2 17:06:06 | 显示全部楼层
wx_i6eDMztN 发表于 2019-11-29 22:35
我已经运行了,但是提示我超出数组范围,能否帮忙解决一下,谢谢

你数据输入的结构大概是什么样的?

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
  • 关注者: 2
发表于 2019-12-5 10:26:48 | 显示全部楼层
野猫子夜猫子 发表于 2019-12-2 17:06
你数据输入的结构大概是什么样的?

就是我有350~2500个光谱数据 ,也就是我设置的xcal是2151*21  ycal 21*1 xval 0 yval 0 我的m-min设置的是5 m-max设置的是20, 21是我有21个样本 1个指标 2151个波段内的光谱反射率

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
  • 关注者: 2
发表于 2019-12-5 16:12:12 | 显示全部楼层
wx_i6eDMztN 发表于 2019-12-5 10:26
就是我有350~2500个光谱数据 ,也就是我设置的xcal是2151*21  ycal 21*1 xval 0 yval 0 我的m-min设置的 ...

我已经做出来了,谢谢

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-12-11 19:15:49 | 显示全部楼层
野猫子夜猫子 发表于 2019-11-12 23:47
问题解决了,这个SPA可以用,通常是直接调用spa()函数。

这个函数中,xcal是光谱的建模集数据,行为样 ...

请问您有出现 警告:秩不足 的情况吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表