Miscellaneous | 余弦相似度

本文介绍了一种计算两个向量余弦相似度的方法,包括特殊情况的处理。通过具体的代码实现展示了如何根据数学公式计算两个向量之间的余弦相似度。
应某博友提问,写以下博文解析
题目如下:

给你两个相同大小的向量 A B,求出他们的余弦相似度

返回 2.0000 如果余弦相似不合法 (比如 A = [0] B = [0]).


样例

给出 A = [1, 2, 3]B = [2, 3 ,4].

返回 0.9926.

给出 A = [0]B = [0].

返回 2.0000

解题思路:

这个题目谈不上解题思路了,因为本质上是数学公式题,需要对余弦的数学公式有一定了解,如图:



思路代码实现如下:

void Method(vector<int> &a,vector<int> &b)
{
    int u=0,dl=0,dr=0;
    for(int i=0;i<(int)a.size();++i)
    {
        u+=a[i]*b[i];
        dl+=(int)pow(a[i],2);
        dr+=(int)pow(b[i],2);
    }
    double m=pow(dl,0.5)*pow(dr,0.5);
    if((int)m==0||u==0)
        printf("%f",2.0);
    else
    printf("%f",(double)u/m);
}


在裁剪 BusyBox 中的 **Miscellaneous Utilities(杂项实用程序)** 组件时,需要对 BusyBox 的配置系统进行调整,以确保这些工具不会被编译进最终的二进制文件中。 BusyBox 使用 Kconfig 配置系统(类似于 Linux 内核的配置方式),可以通过 `make menuconfig` 或其他图形化配置工具进行定制。以下是具体的操作步骤: ### 配置步骤 1. 进入 BusyBox 源码目录并打开配置界面: ```bash make menuconfig ``` 2. 在配置菜单中,导航至: ``` Miscellaneous Utilities ---> ``` 这个选项包含了多个小工具,例如 `basename`、`chrt`、`env`、`ionice`、`nice`、`timeout` 等。 3. 进入该菜单后,可以逐个取消选中不需要的工具。若希望彻底移除整个类别,可以将该选项设置为 `N`(即不编译该类别下的任何工具)[^1]。 4. 保存配置后,执行编译命令: ```bash make make install ``` ### 影响与注意事项 - **镜像大小优化**:移除 Miscellaneous Utilities 可以减少最终生成的 BusyBox 二进制文件体积,这在资源受限的嵌入式系统中尤为重要。 - **功能缺失风险**:某些脚本或应用程序可能依赖于这些工具(如 `timeout` 或 `nice`),移除后可能导致功能异常,因此需要充分测试系统行为是否符合预期。 - **兼容性处理**:如果某些脚本依赖这些工具,建议在裁剪前进行兼容性评估,或者提供替代实现以确保系统稳定性[^1]。 ### 示例代码片段 在 BusyBox 的 `.config` 文件中,Miscellaneous Utilities 的配置项如下所示: ```ini # Miscellaneous Utilities # CONFIG_MISCELLANEOUS=y # CONFIG_ADJTIMEX is not set # CONFIG_BASHPARAM is not set # CONFIG_BEEP is not set # CONFIG_CAL is not set # CONFIG_CHRT is not set # CONFIG_CROND is not set # CONFIG_ENV is not set # CONFIG_FEATURE_CROND_CALL_RANDOM_DELAY is not set # CONFIG_FEATURE_CROND_DEFAULT_TO_HOUR is not set # CONFIG_FEATURE_CROND_DIR is not set # CONFIG_FEATURE_CROND_SCRIPTS is not set # CONFIG_I2C_DEBUG_TOOLS is not set # CONFIG_IONICE is not set # CONFIG_LESS is not set # CONFIG_NICE is not set # CONFIG_NOHUP is not set # CONFIG_NSENTER is not set # CONFIG_PIVOT_ROOT is not set # CONFIG_READAHEAD is not set # CONFIG_RUN_INIT is not set # CONFIG_SETSID is not set # CONFIG_SLEEP is not set # CONFIG_SUID is not set # CONFIG_SV is not set # CONFIG_SYNC is not set # CONFIG_TTYSIZE is not set # CONFIG_UBIATTACH is not set # CONFIG_UBIDETACH is not set # CONFIG_UBIFORMAT is not set # CONFIG_UBIRENAME is not set # CONFIG_UBIRMVOL is not set # CONFIG_UBIRSVOL is not set # CONFIG_UBIUPDATEVOL is not set # CONFIG_UNSHARE is not set # CONFIG_UPTIME is not set # CONFIG_USERS is not set # CONFIG_WATCH is not set # CONFIG_WCHART_TEST is not set # CONFIG_WHO is not set # CONFIG_XARGS is not set ``` 通过将 `CONFIG_MISCELLANEOUS` 设置为 `n`,可以完全禁用该组件。 ---
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值