Matlab:fminsearch用于不连续变化的函数

时间:2013-10-05 17:52:47

标签: matlab sequences fminsearch

我有一系列字符,我使用Matlab函数'multialign'进行多对齐。结果是带有多对齐序列的char矩阵:

e.g。只有3个seqences。

----GC
AT--GC
ATGCGC

接下来,我根据序列之间的相似性对比对的每一列进行评分。在前面的示例中:在第一列中,'A'是最常见的符号,它出现3次中的2次,因此得分为2/3,在最后一列中每次出现字母“C”所以我得分它1,依此类推。最终得分是单个得分的平均值。

现在真正的问题:我使用一个函数创建这些序列,该函数使用阈值来决定是否添加char,因此我可以使用更短或更长的序列。这是另一个具有不同阈值的示例,我以相同的方式得分:

-----ATATGGCGC
AT-ATGCA-G-C--
ATG-TGC--G-C--

我想使用fminsearch来搜索最佳阈值,但我的问题是只更改阈值,分数不会改变,因此fminsearch使用的算法不起作用(例如,如果你从10开始为下一步选择的值类似于9.75 ......)。

这是我做的伪Matlab代码:

[bestthr, bestscore] = fminsearch(@(x) fcnthr(data,x),[10]);

function score = fcnthr(data,thr)

sequences = generateSequencesFromData(data,thr);
multialignmatrix = multialign(sequences);
score = scorealignments(multialignmatrix);

score = 1/score; %I want to find the maximum score so fminsearch searches the minimum of 1/score.

end

有人可以帮助我吗?

0 个答案:

没有答案