24小时热门版块排行榜    

查看: 1780  |  回复: 14

qiusj

金虫 (正式写手)


[交流] 近红外kennard-stone选样本

各位大侠,我最近做近红外,图谱扫描了,选择校正集合验证集想采用kennard-stone选样本,该如何操作,具体怎么弄?是用matlab吗,又该怎么弄?
回复此楼

» 猜你喜欢

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

Nkxz

铁杆木虫 (著名写手)



小木虫: 金币+0.5, 给个红包,谢谢回帖
用下面的matlab程序即可。其中X是需要被分组的样品的近红外光谱样品集,k是需要选出的样品个数。



function [model,test]=kenstone(X,k)
tic
[m,n]=size(X);
if k>=m | k<=0  
    h=errordlg('Wrongly specified number of objects to be selected to model set.','Error');
    model=[];
    if nargout==2
        test=[];
    end
    waitfor(h)
    return
end

x=[[1:size(X,1)]' X];
n=size(x,2);
[i1,ind1]=min(fastdist(mean(x(:,2:n)),x(:,2:n)));
model(1)=x(ind1,1);
x(ind1,=[];

[i2,ind2]=max(fastdist(X(model(1),,x(:,2:n)));
model(2)=x(ind2,1);
x(ind2,=[];

%h=waitbar(0,'Please wait ...');
%h=waitbar(0/k,h);

for d=3:k
    [ii,ww]=max(min(fastdist(x(:,2:n),X(model,)));
        model(d)=x(ww,1);
        x(ww,=[];
%    h=waitbar(d/k,h);
end

if nargout==2
    test=1:size(X,1);
    test(model)=[];
end

%close(h);
toc

function D=fastdist(x,y)

% Calculated Euclideam distances between two sets of objetcs

D=((sum(y'.^2))'*ones(1,size(x,1)))+(ones(size(y,1),1)*(sum(x'.^2)))-2*(y*x');
2楼2012-10-16 15:35:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Nkxz

铁杆木虫 (著名写手)


★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
leecius: 金币+1, 谢谢参与。 2012-10-18 09:05:10
不知道为什么会有笑脸出来,这个可能是个bug吧,我传到附件上了,你自己看吧。
http://g.zhubajie.com/urllink.php?id=128733297robb6l7cg4keoy0
3楼2012-10-16 15:39:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

qiusj

金虫 (正式写手)


引用回帖:
2楼: Originally posted by Nkxz at 2012-10-16 15:35:36
用下面的matlab程序即可。其中X是需要被分组的样品的近红外光谱样品集,k是需要选出的样品个数。



function =kenstone(X,k)
tic
=size(X);
if k>=m | k<=0  
    h=errordlg('Wrongly specified nu ...

样品NIR扫描了,具体如何操作。
4楼2012-10-17 21:19:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Nkxz

铁杆木虫 (著名写手)


★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
leecius: 金币+1, 谢谢参与。 2012-10-18 09:05:16
(1)用opus把每个样品的光谱数据读出来,并存为matlab格式;
(2)用上面的程序来进行k-s分组。
5楼2012-10-17 21:47:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiusj

金虫 (正式写手)


引用回帖:
5楼: Originally posted by Nkxz at 2012-10-17 21:47:20
(1)用opus把每个样品的光谱数据读出来,并存为matlab格式;
(2)用上面的程序来进行k-s分组。

谢谢,能否加你QQ不懂再请教你。
6楼2012-10-18 08:36:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiusj

金虫 (正式写手)


引用回帖:
5楼: Originally posted by Nkxz at 2012-10-17 21:47:20
(1)用opus把每个样品的光谱数据读出来,并存为matlab格式;
(2)用上面的程序来进行k-s分组。

我用的是OPUS格式的图谱怎么才是matlab格式呀,还是不会呀!要不我把图谱发给你,你帮我处理一下,把结果告诉我就可以了,行吗?
7楼2012-10-20 09:00:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huohuoxjtu

新虫 (初入文坛)



小木虫: 金币+0.5, 给个红包,谢谢回帖
看你用的是什么软件了,OPUS可以采用自动分离原理选择样本,很简单。
8楼2012-10-21 16:16:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiusj

金虫 (正式写手)


引用回帖:
8楼: Originally posted by huohuoxjtu at 2012-10-21 16:16:52
看你用的是什么软件了,OPUS可以采用自动分离原理选择样本,很简单。

我知道可以采用,现在就是想用kennard-stone选样本
9楼2012-10-21 19:43:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wmhnwsuaf

金虫 (正式写手)



小木虫: 金币+0.5, 给个红包,谢谢回帖
呵呵,加入近红外交流群,246287439,各位做NIR的虫友一起讨论哦。。。
10楼2013-01-19 00:01:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

日月星球

新虫 (初入文坛)



小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
3楼: Originally posted by Nkxz at 2012-10-16 15:39:09
不知道为什么会有笑脸出来,这个可能是个bug吧,我传到附件上了,你自己看吧。
http://g.zhubajie.com/urllink.php?id=128733297robb6l7cg4keoy0

哥们   能把算法给我发一下吗   谢谢!附上说明,灰常感谢!!!
11楼2014-12-17 22:52:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiusj

金虫 (正式写手)


自己看二楼
12楼2014-12-18 09:15:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙缘浪子

金虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
3楼: Originally posted by Nkxz at 2012-10-16 15:39:09
不知道为什么会有笑脸出来,这个可能是个bug吧,我传到附件上了,你自己看吧。
http://g.zhubajie.com/urllink.php?id=128733297robb6l7cg4keoy0

链接已经失效
能贴一张程序的截图吗  这样就可以把笑脸更改一下
13楼2018-06-25 18:25:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙缘浪子

金虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
2楼: Originally posted by Nkxz at 2012-10-16 15:35:36
用下面的matlab程序即可。其中X是需要被分组的样品的近红外光谱样品集,k是需要选出的样品个数。



function =kenstone(X,k)
tic
=size(X);
if k>=m | k<=0  
    h=errordlg('Wrongly specified nu ...

将笑脸替换为‘’即可
14楼2018-06-25 19:07:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙缘浪子

金虫 (小有名气)


引用回帖:
2楼: Originally posted by Nkxz at 2012-10-16 15:35:36
用下面的matlab程序即可。其中X是需要被分组的样品的近红外光谱样品集,k是需要选出的样品个数。



function =kenstone(X,k)
tic
=size(X);
if k>=m | k<=0  
    h=errordlg('Wrongly specified nu ...

将笑脸替换为‘:’和‘)’
15楼2018-06-25 19:09:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 qiusj 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见