Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 仅从矩阵中选择向量中给定的值_Matlab_Machine Learning - Fatal编程技术网

Matlab 仅从矩阵中选择向量中给定的值

Matlab 仅从矩阵中选择向量中给定的值,matlab,machine-learning,Matlab,Machine Learning,假设我们有一个向量a,有1000个值a=[1000个值] 矩阵B是MxN:B=MxN 如何仅从B中选择A中出现的值,并生成M行和相等列数的矩阵 另外:这是一个关于使用互信息进行分类的问题。”“A”包含交互信息,“B”包含测试数据集 编辑:A中的值来自另一个数据集的互信息算法,该数据集的大小为500x 1001。其中500是样本数,1000是特征向量大小。第一列是每个示例的类。 矩阵B仅由具有特征向量的测试样本组成,没有类别 如何仅从B中选择出现在A中的值 您可以使用ismember功能进行此操作

假设我们有一个向量a,有1000个值a=[1000个值] 矩阵B是MxN:B=MxN

如何仅从B中选择A中出现的值,并生成M行和相等列数的矩阵

另外:这是一个关于使用互信息进行分类的问题。”“A”包含交互信息,“B”包含测试数据集

编辑:A中的值来自另一个数据集的互信息算法,该数据集的大小为500x 1001。其中500是样本数,1000是特征向量大小。第一列是每个示例的类。 矩阵B仅由具有特征向量的测试样本组成,没有类别

如何仅从B中选择出现在A中的值

您可以使用
ismember
功能进行此操作

。。。然后做一个矩阵,它有M行和相等的列数

您确定B中的每一行都有与A中相同数量的元素吗?如果没有,这将不起作用。

用于查找
B
的哪些成员出现在
A
中:

ismember(B, A)
结果是一个与
B
尺寸相同的逻辑掩码,您可以根据需要对其进行操作。要保留仅包含出现在
A
中的元素的
B
行,请执行以下操作:

Bnew = B(all(ismember(B, A), 2), :)
处理浮点数 如果您的数据包含浮点数,则
ismember
方法可能会失败,因为浮点数比较不准确(正如所指出的)。因此,这里有一种替代方法(类似于),它对浮点数非常健壮:

x = reshape(b, 1, 1, []);
idx = reshape(any(abs(bsxfun(@minus, x, a)) < eps, 2), size(b));
Bnew = B(idx);
x=重塑(b,1,1,[]);
idx=重塑(任何(abs(bsxfun(@减号,x,a))
本质上这是一个单行程序,但为了清晰起见,我将其分为两个命令:

  • x
    是要搜索的目标值,沿三维连接
  • bsxfun
    依次从
    a
    中减去每个值,并将结果的大小与某个小阈值(例如
    eps
    )进行比较
  • 生成的逻辑向量被重新整形为矩阵
    idx
    ,其维度为
    b
    ,用作索引矩阵,以选择出现在
    a
    中的值

如何保证出现在
A
B
中的值的数量可以被M整除?你看,如果它不是,你就不能用它的M行组成一个矩阵。它不是。请参见“编辑”部分,以了解更多信息。您想保留
B
中的哪些行?是那些所有值都出现在
A
中的值,还是至少出现一个值?请查看编辑。谢谢。也许你可以使用
ismember(A,B,'rows')
的形式。请注意,您不应该以这种方式比较浮点数,请使用带有适当阈值的绝对差:
abs(x-y)@Amro
A
只是一组值,不是吗?不是N长度的行。。。在这种情况下,“行”在这里是不好的。关于浮点数的观点很好。也许你是对的,老实说,这个问题不是很清楚