123
返回列表 发新帖
楼主: 风萧水寒

[已答复] SPA(连续投影算法)

[复制链接]

新手

5 麦片

财富积分


050


0

主题

3

帖子

0

最佳答案
发表于 2019-4-10 18:44:47 | 显示全部楼层
CAU-liuning 发表于 2018-3-26 23:27
xcal、yval是建模集的光谱反射率(X)和输出值(Y)

输出值什么意思

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-4-18 14:38:55 | 显示全部楼层
我想知道他的输出分别代表什么啊,Xcal,Ycal应该分别代表的是校正集的光谱和浓度矩阵,而Xval,Yval则是预测集的光谱和浓度矩阵

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-5-12 11:27:53 | 显示全部楼层
波长应该输入到哪里呀

新手

5 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
发表于 2019-8-4 11:52:09 | 显示全部楼层
大可爱 发表于 2019-5-12 11:27
波长应该输入到哪里呀

同样的问题,请问您解决了么,望指教,感谢

新手

5 麦片

财富积分


050


0

主题

6

帖子

0

最佳答案
发表于 2019-10-28 15:53:42 | 显示全部楼层
请问,楼主,这个代码一定要2007版本的才能用吗

新手

10 麦片

财富积分


050


1

主题

5

帖子

0

最佳答案
发表于 2019-10-31 10:51:57 | 显示全部楼层
蓝冰雪 发表于 2019-1-17 10:49
楼主麻烦问一下,这个问题您已经知道了吗,望指教谢谢

Xcal Ycal 分别是建模集的光谱反射率矩阵和待测物质含量
Xval Yva 分别是验证集(或称为:预测集或测试集)光谱反射率矩阵和待测物质含量
就是说,同一批光谱数据分析之前先要划分样本集,将所有样本划分为建模集和验证集

新手

5 麦片

财富积分


050


2

主题

12

帖子

0

最佳答案
发表于 2019-10-31 22:39:05 | 显示全部楼层
我用过这个,xcal是光谱的建模集数据,行为样本,列为波段,这么放;ycal是样本指标,是一列数值;剩下val是验证集,xval是光谱数据的,yval是样本指标,数据摆放方法和cal系列一样。xval和yval可以是空矩阵[]。
然后是m_min和m_max,分别代表筛选波段数量的区间,函数筛选的波段数量在[m_min,m_max]之间,autoscaling选1(yes)和0(no)都可以,我用的1,跑出来了,建模效果不错,就没试0

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-11-7 17:30:56 | 显示全部楼层
野猫子夜猫子 发表于 2019-10-31 22:39
我用过这个,xcal是光谱的建模集数据,行为样本,列为波段,这么放;ycal是样本指标,是一列数值;剩下val ...

你好,我正在使用这个程序做光谱处理,过程中因为matlab版本的问题无法使用gui界面,只能使用直接调用spa函数的方式进行。但是我在运行过程中spa函数多次出现因为运行矩阵前后维数不匹配而报错的情况,想请问一下你在使用过程中有过这类情况吗?这些代码在使用之前需要修改吗?另外,我的Xcal是62*3164,Ycal是62*4,Xval是30*3164,Yval是30*4,最大和最小都自行设置了,autoscaling选择是1。如果看到请给与回复,谢谢。

新手

5 麦片

财富积分


050


2

主题

12

帖子

0

最佳答案
发表于 7 天前 | 显示全部楼层
时光催人老丶 发表于 2019-11-7 17:30
你好,我正在使用这个程序做光谱处理,过程中因为matlab版本的问题无法使用gui界面,只能使用直接调用spa ...

ycal在spa.m中一共出现了3次运算,调用的是validation函数,在validation中,ycal的出现方式是:

Xcal_ones = [ones(N,1) Xcal(:,var_sel)];
b = Xcal_ones\ycal;
yhat = [ones(NV,1) Xval(:,var_sel)]*b

matlab中“\”是左除法,如果ycal是矩阵数据,而非向量,是可以运算出来的,但在yhat这一步,我用类似的数据运算时,提示说:
错误使用  *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。

所以这个算法出现问题可能是你Ycal是矩阵而不是向量。

我获得的另一份SPA的算法中,都是单Y多X的,没见过多Y的。网上没找到讲SPA原理的,是否支持多Y对多X也不清楚。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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