Matlab 如何比较两个不同维度的向量来得到逻辑数组?

Matlab 如何比较两个不同维度的向量来得到逻辑数组?,matlab,Matlab,我有两个不同维度的向量。让我们简单地说 A = rand(30, 1); B = rand(10, 2); 基本上,我想要这样:如果A(I,1)=B(I,2)是真的,那么做某事。我试着用在诸如I=size(A)这样的语句中,显然,这是因为两个维度的缘故。如果有人知道如何解决这个问题,请告诉我。您可能想做类似的事情 for i = min(size(A), size(B)) if A(i,1)<=B(i,1) & A(i,1)>=B(i,2) i=min(尺寸(A)

我有两个不同维度的向量。让我们简单地说

A = rand(30, 1);
B = rand(10, 2);

基本上,我想要这样:如果
A(I,1)=B(I,2)
是真的,那么做某事。我试着用在诸如I=size(A)这样的语句中,显然,这是因为两个维度的缘故。如果有人知道如何解决这个问题,请告诉我。

您可能想做类似的事情

for i = min(size(A), size(B))
   if  A(i,1)<=B(i,1) & A(i,1)>=B(i,2)
i=min(尺寸(A)、尺寸(B))的

如果A(i,1)=B(i,2)
然后做一些事情


不太熟悉Matlab,懒得动手;希望有帮助。

您可能想做类似的事情

for i = min(size(A), size(B))
   if  A(i,1)<=B(i,1) & A(i,1)>=B(i,2)
i=min(尺寸(A)、尺寸(B))的

如果A(i,1)=B(i,2)
然后做一些事情


不太熟悉Matlab,懒得动手;希望能有所帮助。

您可以执行以下操作

%# find out which array is longer
lenA = size(A,1);
lenB = size(B,1);

minLength = min(lenA,lenB);

%# do vectorized comparison
trueOrFales = all(A(1:minLength)<=B(1:minLength,1)) && ...
    all(A(1:minLength)>=B(1:minLength,2))
%#找出哪个数组更长
lenA=尺寸(A,1);
lenB=尺寸(B,1);
最小长度=最小(lenA,lenB);
%#进行矢量化比较
trueOrFales=all(A(1:minLength)=B(1:minLength,2))

您可以执行以下操作

%# find out which array is longer
lenA = size(A,1);
lenB = size(B,1);

minLength = min(lenA,lenB);

%# do vectorized comparison
trueOrFales = all(A(1:minLength)<=B(1:minLength,1)) && ...
    all(A(1:minLength)>=B(1:minLength,2))
%#找出哪个数组更长
lenA=尺寸(A,1);
lenB=尺寸(B,1);
最小长度=最小(lenA,lenB);
%#进行矢量化比较
trueOrFales=all(A(1:minLength)=B(1:minLength,2))

你好,乔治,谢谢你的帮助。但这只适用于A的大小小于B的情况。在我的例子中,A的大小大于B,但
min(A,B)
不应该返回两者之间的较小数字吗?另外,我忘了将括号括起来表示min。当然,您只能比较较小数组的元素数。。。剩下的你需要一个新的来继续玩偶乔治,我知道。再次感谢你的帮助。问题是我想比较大尺寸的A和小尺寸的B!我不知道是否有任何方法可以做到这一点。对于I=min(大小(A),大小(B)):这将只运行两次,一次我是最小行数(在本例中为10),一次我是最小列数(1)。。。这就是你的建议吗?嗨,丹,我想它会运行10次,因为I=min(大小(A),大小(B))是从1到10。让我再次澄清我的问题。我想要的是比较A的每一行和B的每一行。对于我的数据,A的每一行应该在B(I,:)的范围内。我不知道B的哪一行,这就是为什么我需要一个代码来这样做。但是,A的每一行只跟在B的一行后面!所以我想知道我能为这个问题做些什么。当然,尺码(A)>>尺码(B)你好,乔治,谢谢你的帮助。但这只适用于A的大小小于B的情况。在我的例子中,A的大小大于B,但
min(A,B)
不应该返回两者之间的较小数字吗?另外,我忘了将括号括起来表示min。当然,您只能比较较小数组的元素数。。。剩下的你需要一个新的来继续玩偶乔治,我知道。再次感谢你的帮助。问题是我想比较大尺寸的A和小尺寸的B!我不知道是否有任何方法可以做到这一点。对于I=min(大小(A),大小(B)):这将只运行两次,一次我是最小行数(在本例中为10),一次我是最小列数(1)。。。这就是你的建议吗?嗨,丹,我想它会运行10次,因为I=min(大小(A),大小(B))是从1到10。让我再次澄清我的问题。我想要的是比较A的每一行和B的每一行。对于我的数据,A的每一行应该在B(I,:)的范围内。我不知道B的哪一行,这就是为什么我需要一个代码来这样做。但是,A的每一行只跟在B的一行后面!所以我想知道我能为这个问题做些什么。当然,尺码(A)>>尺码(B)你好,乔纳斯,谢谢你的帮助。同样,我的A比B大。如果A的大小比B小,我没有问题。@Lei:如果你知道A总是比B大,你可以只写
minLength=size(B,1)。不管怎样,如果你觉得这个答案有用,请考虑接受它。嗨,乔纳斯,谢谢你的帮助。同样,我的A比B大。如果A的大小比B小,我没有问题。@Lei:如果你知道A总是比B大,你可以只写
minLength=size(B,1)。不管怎样,如果你发现这个答案是有用的,请考虑接受它。当i=25时,你想要什么样的行为,例如,作为B(25,1)没有定义?当I=25时,你希望什么行为?例如,作为B(25,1)没有定义?