Office中国论坛/Access中国论坛

标题: 未知成分筛选匹配问题 [打印本页]

作者: everlastingz    时间: 2013-7-1 17:35
标题: 未知成分筛选匹配问题
本帖最后由 everlastingz 于 2013-7-2 11:03 编辑

  新人。向各位前辈请教个问题。  
  我有 A B C D E F。。。若干个精油成分表格 每个表格里有不同的 十几种成分 和含量 ,怎么从另外一个未知产品中(成分 含量) 筛选匹配出 可能含有 ABCDEF。。。这些精油的哪一种或几种呢?

  例如,A精油 里面主体成分 A1 含量 5.1%  A2 含量2.1%  A3 含量 0.8%
一般基本可以以这三个成分和含量来判断未知产品里是否含有此A精油。
  同理,B精油 里面主体成分 B1 含量 3.1%  B2 含量1.1%  A3 含量 0.7%
一般基本可以以这三个成分和含量来判断未知产品里是否含有此B精油。
  其它种类以此类推。 大神们给个解决方案!

精油A的主要含量表 [tr][/tr]
成分
百分含量


β-柏木烯
5.222
罗汉柏烯
25.288
β-雪松烯
1.965
Α-姜黄烯
1.504
花侧柏烯
4.881
花柏烯
2.678
delta-杜松烯
2.053
柏木脑
17.426
α-
柏木烯
14.571


精油B 的主要含量表
[tr][/tr]
成分
百分含量
β-榄香烯
1.392
石竹烯
4.041
α-愈创木酚
25.838
α-藿香烯
6.594
delta-愈创木酚
21.656
藿香醇
16.444
β-藿香烯
      3.955 
 
 






作者: admin    时间: 2013-7-1 19:27
判断 新精油 的 各明细含量是否等于B精油同样的含量即可啊
作者: everlastingz    时间: 2013-7-1 20:15
admin 发表于 2013-7-1 19:27
判断 新精油 的 各明细含量是否等于B精油同样的含量即可啊

十分感谢帮助 ,我这个问题可能有些复杂 新样品不是精油产品 只是其中含有少量,一般是低于总体10%含量的一种或者几种精油 。 这里主要目的就是想利用已经有的其它精油数据中的主体特征成分以及对应含量 来进行对比筛选 ,最终判定新样品里是含有哪(几)种精油 这种目的 access应该可以实现吧
作者: admin    时间: 2013-7-1 20:41
你最好举个例子,新品种 含 有各种多少 是属于A 含 有多少是属于B
作者: everlastingz    时间: 2013-7-2 10:52
admin 发表于 2013-7-1 20:41
你最好举个例子,新品种 含 有各种多少 是属于A 含 有多少是属于B

未知样品X的成分表

芳樟醇


3.505
玫瑰醚
0.106
乙酸苄酯
3.166
苯甲酸乙酯
0.006
香草醇
0.362
肉桂醛
0.044
五月铃兰醇
0.252
甲酸香草酯
0.061
羟基香草醛
0.069
十一烯醛
0.152
肉桂醇
0.966
洋茉莉醛
0.771
邻氨基苯甲酸甲酯
0.038
甲酸肉桂酯
0.037
乙酸香草酯
0.019
丁香酚
2.759
甲位突厥酮
0.035
紫罗兰酮
0.043
85-91-6
0.077
香豆素
1.437
乙酸肉桂酯
0.02
兔耳草醛
1.073
菠萝醚
1.333
玫瑰花醇
1
异甲基紫罗兰酮
2.071
丁位癸内酯
0.166
抗氧化剂BHT
5.324
甲基紫罗兰酮
0.826
铃兰醛
5.934
新洋茉莉醛
0.361
复盆子酮
0.174
桃醛
0.985
塑化剂 邻苯二甲酸二乙酯
40.785
合成橡苔4707-47-5
0.168
甲位己基桂醛
12.84
环十五内酯
0.156
佳乐麝香
2.991
柳酸苄酯
4.146
delta-杜松烯
0.098
藿香醇
0.637
α-柏木烯
0.114
β-柏木烯
0.133
α-愈创木酚
0.164
β-藿香烯
0.084
β-榄香烯
0.024
溶剂
3.218

作者: aslxt    时间: 2013-7-2 12:44
这个问题是这个意思吗:三份原牛奶+二份可口可乐+0.5份茅台混在一起,然后在添加蒸馏水稀释。再交给检验人员,同时也告诉检验人员常见物资(牛奶、可乐、茅台、橘子汁、橙汁、高汤...等等)的各种组成部分的含量。要求检验人员分析出该混合物资是由哪些常见物资组成。
你就是检验人员,已经得出混合物资的各种组成部分的含量,要完成的就是指出该混合物资是由哪些常见物资组成?
作者: everlastingz    时间: 2013-7-2 13:03
aslxt 发表于 2013-7-2 12:44
这个问题是这个意思吗:三份原牛奶+二份可口可乐+0.5份茅台混在一起,然后在添加蒸馏水稀释。再交给检验人 ...

恩 差不多 这个意思 ,现在主要需要的就是 牛奶 可乐是常见的 不用花太多精力去识别出 ,重点就是茅台这类,各种酒类不一样的特征 我需要知道是剑南春 还是天之蓝 还是 五粮液
作者: aslxt    时间: 2013-7-2 13:07
有点意思,还是发个实例上来研究研究。
作者: everlastingz    时间: 2013-7-2 13:49
aslxt 发表于 2013-7-2 13:07
有点意思,还是发个实例上来研究研究。

实例已经发在上面了,AB的成分表 就相当牛奶、可乐  ;X就是待分析检测的物质,X里含有的成分和比例也有了, 最后就是判断X里是否含有 A 或B 或者两者都有 。 因为我举的这个例子是比较简单的,为的就是建立个方法能在更复杂的条件下判断更多的成分,比如含有ABCDEF六种或者更多的成分
作者: aslxt    时间: 2013-7-2 14:50
你的数据中未知物资X既没有A也没有B物资,因为A物资的部分成分在X中没有,B物资的部分成分在X中没有。
所以让你提供比较完整的实例,便于进一步...
作者: everlastingz    时间: 2013-7-2 14:54
本帖最后由 everlastingz 于 2013-7-2 14:55 编辑
aslxt 发表于 2013-7-2 14:50
你的数据中未知物资X既没有A也没有B物资,因为A物资的部分成分在X中没有,B物资的部分成分在X中没有。
所 ...


这样啊,因为这个判定是比较难的 ,要求是 :需要满足 X含有 A或者B中 含量较高的几个成分即可 就可以判定X含有A或者B  ,不是需要满足X含有A或B中所有的成分才能确定判断X含有A或B的

另外 X中 不是有如下几样吗?! 这是A或B里面都有的一些成分
delta-杜松烯
0.098
藿香醇
0.637
α-柏木烯
0.114
β-柏木烯
0.133
α-愈创木酚
0.164
β-藿香烯
0.084
β-榄香烯
0.024


作者: aslxt    时间: 2013-7-2 14:59
本帖最后由 aslxt 于 2013-7-2 15:04 编辑

另外,如果不同标准物资混合后,某些成分之间发生了化学反应,生成了新的成分,怎么办?比方说:酸+碱,生成了盐。
作者: everlastingz    时间: 2013-7-2 15:02
本帖最后由 everlastingz 于 2013-7-2 15:06 编辑
aslxt 发表于 2013-7-2 14:59
另外,如果不同标准物资混合后,某些成分之间发生了化学反应,生成了新的成分,怎么办?


这个不会的,不用担心。  另外 在复杂情况下 还要考虑 ABCEDF中可能含有重复相同的成分,这些成分要考虑下
作者: aslxt    时间: 2013-7-2 16:57
如果标准样品(A/B/C...)的成分含量一旦给出,分析X的时候就一定要检测出该成分,可能会好处理一些,ABCEDF中可能含有重复相同的成分也不怕。思路大约是这样:首先比较A物资的所有成分是否存在于X,如果存在,就按比例剔除A物资的成分的含量,然后X剩余的再和B物资比较...
这些过程要用到代码,多个临时表。
作者: everlastingz    时间: 2013-7-2 17:22
本帖最后由 everlastingz 于 2013-7-2 17:36 编辑
aslxt 发表于 2013-7-2 16:57
如果标准样品(A/B/C...)的成分含量一旦给出,分析X的时候就一定要检测出该成分,可能会好处理一些,ABCED ...


晕哦 ,新手啊,感觉很复杂的样子 能帮助根据这AB还有X做个示范吗

另外您说的“按比例剔除” 这个是种思路 ,感觉如果如果含有ABCDEF这样多了以后可能会有失误。 退而求其次,先不考虑含量比例的剔除,先就简单的判断X中是否含有A或者B  

作者: aslxt    时间: 2013-7-3 11:47
本帖最后由 aslxt 于 2013-7-3 11:56 编辑

先就简单的判断X中是否含有A或者B:
示例[attach]52073[/attach]
解压并打开文件,单击窗体中的【分析】按钮,结果是按照相似度最高的取数。


作者: everlastingz    时间: 2013-7-3 12:37
本帖最后由 everlastingz 于 2013-7-3 12:48 编辑
aslxt 发表于 2013-7-3 11:47
先就简单的判断X中是否含有A或者B:
示例
解压并打开文件,单击窗体中的【分析】按钮,结果是按照相似度 ...


十分感谢啊,查询 中 相等 和 主要成分 这两个是做什么的呢  

另外表中的标准成分 我想添加其它的成分进去 怎么做呢  ,添加完后是不是也自动应用到分析中呢?

还有窗体中能不能列出各个标准成分的相似度 降序排列表示呢
作者: aslxt    时间: 2013-7-3 13:28
本帖最后由 aslxt 于 2013-7-3 13:29 编辑

【主要成分】是标准物质的含量大的成分,因为【标准物质】的所有成分可能在被分析的X中找不到。
“降序排列”就是把【标准物资】的成分的含量排序。如果X中找不到所有物资成分,就去掉含量最少的那个成分,再与X比较。
“另外表中的标准成分 我想添加其它的成分进去 怎么做呢  ,添加完后是不是也自动应用到分析中”,是。
“窗体中能不能列出各个标准成分的相似度”?需要后续设计!----需要更多的实例数据。具体路径还在思考中...
【相等】只是查询两表的成分相同的物资的验证。

作者: everlastingz    时间: 2013-7-4 11:38
aslxt 发表于 2013-7-3 13:28
【主要成分】是标准物质的含量大的成分,因为【标准物质】的所有成分可能在被分析的X中找不到。
“降序排 ...

多谢帮助啊,期待进一步的完善, 另外 我可以从外部导入excel表格 然后根据此导入的表格进行分析吗
作者: aslxt    时间: 2013-7-4 18:26
everlastingz 发表于 2013-7-4 11:38
多谢帮助啊,期待进一步的完善, 另外 我可以从外部导入excel表格 然后根据此导入的表格进行分析吗

可以,只要数据类型不变。
作者: aslxt    时间: 2013-7-4 18:27
everlastingz 发表于 2013-7-4 11:38
多谢帮助啊,期待进一步的完善, 另外 我可以从外部导入excel表格 然后根据此导入的表格进行分析吗

期待有更多一点的数据上传呢!
作者: everlastingz    时间: 2013-7-4 19:06
aslxt 发表于 2013-7-4 18:27
期待有更多一点的数据上传呢!

我回头整理下啊 多谢啊
作者: aslxt    时间: 2013-7-4 21:15
本帖最后由 aslxt 于 2013-7-4 21:20 编辑
everlastingz 发表于 2013-7-4 19:06
我回头整理下啊 多谢啊


不要客气。按比例剔除的实例已经初步搞好。
[attach]52090[/attach]
不过...
一个十分重要的问题需要明确:之前不是说相似度吗,那是按照标准物资的成分的含量的大小来计算相似度的,即如果X中没有某物资(例如A)的全部成分,就去掉A的含量最小的成分再和X比较,只到找到为止。这样会产生一个问题,比方说A物资有10种成分,恰好含量最高的A1成分在X中没有,而其他9种成分都存在,按照上述规则,就得出结论,根本不存在A物资;与之对应的B物资,可能有15种成分,只找到含量最大的那种,其余均不能找到,按照上述规则,可以得出结论,存在B物资,相似度为1/15,这...
该如何处理?


作者: everlastingz    时间: 2013-7-5 10:56
aslxt 发表于 2013-7-4 21:15
不要客气。按比例剔除的实例已经初步搞好。

不过...

这样啊! 可不可以还是优先按照以X中还有A中主要成分数量来计算相似度呢  。例如 A中 有10种物质成分,X中含有和A中7种相同的物质成分 ,这样相似度就是70%了 。另外这种计算方法还是以A中物质含量从大到小来比较!
作者: aslxt    时间: 2013-7-5 16:08
实例:
[attach]52099[/attach]
作者: everlastingz    时间: 2013-7-5 20:13
本帖最后由 everlastingz 于 2013-7-5 20:22 编辑
aslxt 发表于 2013-7-5 16:08
实例:


十分感谢啊! 图中标准文件中的含量为什么那么多#号呢 ?另外小数点后位数过多 那么多0 看的眼花 这个可以修改下吧!还有含量数字前都有个¥的符号,这个能去掉吗(其它几个表和查询里也都是这样)

另外 我导入另外一个待分析的Y文件,excel格式,然后进行分析,怎么操作呢?  

作者: aslxt    时间: 2013-7-6 11:44
为什么那么多#号呢 ?-----那是列宽不够,因为表中的数据类型不能设为小数(在VBA代码中计算时会出错),而设为单精度类型或双精度类型,计算后会有很多极小的数据。只有设为货币(精确到小数点后8位),所以,数字前都有个¥的符号。
导入原始数据:各种物资的成分的标准数据,导入到表“标准成分”;待分析的数据,导入到表“分析”。然后先后点击窗体的【1分析相似度】、【2、根据...】两个按钮即可。分析完的的结果就展现在两个子窗体中。
作者: aslxt    时间: 2013-7-6 11:50
实例只是提供一种解决问题的方法。由于你的原始数据和具体要求并没有提供,所以,要根据你的原始数据和结果要求,自行变更。
作者: everlastingz    时间: 2013-7-6 16:33
本帖最后由 everlastingz 于 2013-7-6 16:42 编辑
aslxt 发表于 2013-7-6 11:44
为什么那么多#号呢 ?-----那是列宽不够,因为表中的数据类型不能设为小数(在VBA代码中计算时会出错),而 ...


我按照你说的方法把y文件导入,然后点分析 ,结果却没有改变,好像出现错误的情况!不知为什么。 Y我已经上传在附件里了

另外说明,Y里面不含有ABC的标准物质 ,这个。。不知道是不是和这个有关

附图一个,这就是点完 分析相似度后出现的对话框

作者: aslxt    时间: 2013-7-7 10:52
本帖最后由 aslxt 于 2013-7-7 10:54 编辑
everlastingz 发表于 2013-7-6 16:33
我按照你说的方法把y文件导入,然后点分析 ,结果却没有改变,好像出现错误的情况!不知为什么。 Y我已 ...


因为相似度为0,代码中没有出错处理导致。你就不能模拟完整点的数据?
作者: everlastingz    时间: 2013-7-8 09:58
aslxt 发表于 2013-7-7 10:52
因为相似度为0,代码中没有出错处理导致。你就不能模拟完整点的数据?

我再试试弄点数据,这几天头晕脑胀的
作者: everlastingz    时间: 2013-7-8 11:04
本帖最后由 everlastingz 于 2013-7-8 11:28 编辑
aslxt 发表于 2013-7-7 10:52
因为相似度为0,代码中没有出错处理导致。你就不能模拟完整点的数据?


我自己添加个标准物质D  然后导入个待分析Z (分析1)点 分析相似度 又出现下面图

其中分析1中 字段2 ¥后都变成一位数 ,而点分析相似度应该还是分析而不是分析1 ,这个怎么解决 。导入excel时候好像不能覆盖分析。

Z打包上传到附件了







欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3