【问题标题】:Convert double matrix to integer matrix in Matlab在Matlab中将双矩阵转换为整数矩阵
【发布时间】:2015-07-26 15:24:16
【问题描述】:

我在 R 中构建了两个二进制矩阵,然后将它们加载到 MATLAB。我想通过使用此功能进行特征选择:

[steps,sel_flag,rel,red,cond_red] = select_features(BinaryMat1,BinaryMat2, 'degree', 2);

两个二进制矩阵是double 格式,但我得到了这个错误:

未定义函数select_features for double 类型的输入参数。

如何在 Matlab 中将这两个矩阵转换为整数?我试过uint8int32int64,但每次都遇到同样的错误。

【问题讨论】:

    标签: r matlab matrix integer double


    【解决方案1】:

    只需将每个矩阵转换为logical。这可以通过在调用函数之前强制转换它们来完成:

    BinaryMat1 = logical(BinaryMat1);
    BinaryMat2 = logical(BinaryMat2);
    [steps,sel_flag,rel,red,cond_red] = select_features(BinaryMat1,BinaryMat2, 'degree', 2);
    

    小提示

    您也可能遇到该错误,因为 MATLAB 找不到要运行的函数。在运行代码之前,请确保您的计算机上有此功能。你引用的函数不是 MATLAB 原生环境的一部分,但是通过简单的谷歌搜索,我发现了这个:

    http://www.mathworks.com/matlabcentral/fileexchange/26981-feature-selection-based-on-interaction-information/content//select_features/select_features.m

    查看源代码后,看起来输入并不只是专门用于二进制矩阵。看起来它们可以是任何矩阵,只要它们表示整数类型,所以整数,无符号整数也可以工作,但我高度怀疑你没有正确下载工具箱,或者假设这个工具箱是 MATLAB 的本机图书馆。

    完整的工具箱可以在这里找到:http://www.mathworks.com/matlabcentral/fileexchange/submissions/26981/v/1/download/zip

    这是由独立于 MathWorks 的个人编写的自定义工具箱的一部分,因此请确保下载此工具箱,将其放在可访问的地方,然后再次运行代码。

    下载工具箱,从存档 (.zip) 文件中提取内容,然后添加此目录到 MATLAB 的路径。您可以通过转到 File->Set Path 并将此目录添加到 MATLAB 的路径来执行此操作,或者通过以下方式在命令提示符下执行此操作:

    path(path,genpath('/path/to/toolbox/dir'));
    

    【讨论】:

    • 我试过了,但我得到了这个错误:未定义函数'select_features'用于'char'类型的输入参数。
    • @user36729 - 您确定您下载工具箱吗?您是否将工具箱添加到您的 MATLAB 路径中? char 错误现在意味着您的计算机上没有该功能。这与您声明输入矩阵的方式无关。
    • @user36729 - 我添加了有关如何将工具箱添加到 MATLAB 路径的说明。仅仅因为您下载了工具箱并不意味着 MATLAB 会知道它在哪里。您必须将其包含在其搜索路径中。
    • 你说得对,我认为这个函数是 MATLAB 原生环境的一部分。让我下载工具箱并再次运行代码。非常感谢。
    • @user36729 - 太棒了。完全没有问题。考虑接受我的回答,让 StackOverflow 社区知道您不再需要帮助。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多