Matlab绘制搜索成功概率-Jaccard相似度曲线无输出无报错如何解决?
错误原因与修改方案
- 第一处错误是
linspace调用参数错误:linspace第三个参数为采样点数,必须传入正整数,原代码传入0.2会直接返回空数组,导致s变量无值,最终输出空图。 - 第二处错误是循环逻辑与公式不匹配:外层
i循环未正确实现对应项的累加逻辑,每次迭代会直接覆盖sigmoid数组的所有值,且sum函数使用场景错误。 - 第三处错误是大数计算精度问题:直接用
factorial计算100的阶乘会出现数值溢出、精度丢失,建议使用Matlab内置的nchoosek函数计算组合数。 - 第四处错误是绘图参数不完整:
linew是线宽参数的简写,后续必须跟线宽数值,否则会触发参数解析错误。
修改后可运行代码
clc clear % 输入参数 b=100; r=5; v=2; % 生成Jaccard相似度采样点,采样点数可根据需求调整 s = linspace(0,1,100); sigmoid = zeros(1, length(s)); % 按公式计算概率 for j=1:length(s) total = 0; for i=0:v-1 comb = nchoosek(b, i); term = comb .* (1 - (s(j)^r)^(b-i)) .* (s(j)^r)^i; total = total + term; end sigmoid(j) = 1 - total; end % 绘图 plot(s, sigmoid, 'LineWidth', 2) xlabel('Jaccard相似度') ylabel('搜索成功概率') grid on
内容的提问来源于stack exchange,提问作者samira F
相关产品推荐
相关产品推荐

