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 测试坐标(x,y)是否在矩阵内_Matlab_Matrix - Fatal编程技术网

Matlab 测试坐标(x,y)是否在矩阵内

Matlab 测试坐标(x,y)是否在矩阵内,matlab,matrix,Matlab,Matrix,我有一个矩阵D,如下所示: D=[ 1 2 3 4 5 6 ] 我想做的是测试我在(ii,jj)位置的坐标是否属于D中的一行 换句话说,我有一个for循环,在它里面,如果验证“(ii&jj)属于D”行的条件为真,我想将一个变量增加1 例如,我们可以手动执行此操作: var = 0; for ii = 1: 20 for jj = 1:30 if((ii==1 && jj==2) || (ii==3 &a

我有一个矩阵D,如下所示:

  D=[ 
    1 2  
    3 4  
    5 6
       ]
我想做的是测试我在
(ii,jj)
位置的坐标是否属于D中的一行

换句话说,我有一个for循环,在它里面,如果验证“(ii&jj)属于D”行的条件为真,我想将一个变量增加1

例如,我们可以手动执行此操作:

var = 0;
for ii = 1: 20
    for jj = 1:30
        if((ii==1 && jj==2) || (ii==3 && jj==4) || (ii==5 && jj==6))
var = var + 1;
end
    end
        end
这很简单,因为矩阵D只包含
3行。但是在我的工作中,我大约有
1000
行,因此D的大小为
1000*2
。在这种情况下,我必须找到一种方法,可以做同样的工作,我已经写了上面,但自动和以非常快的方式。但是怎么做呢

事实上,人们可以考虑使用
ismember
,例如:

var = 0;
for ii = 1 : 20
    for jj = 1 : 30
        if(ismember(ii, D(:,1)) && ismember(jj, D(:,2)))
var = var + 1;
end
    end
        end
但这是不正确的,因为例如,上面的代码可以找到
ii=1
jj=6
,但在这种情况下
(ii,jj)
将是
(1,6)
,并且不属于
(1,2)
(3,4)
(5,6)


请,任何帮助都将不胜感激

您可以使用
“行”
输入来检查数组是否是矩阵中的一行

tf = ismember([ii,jj], D, 'rows');
您还可以同时检查
ii
jj
的多个值

% Create all permutations of ii and jj
[ii,jj] = ndgrid(1:20, 1:30);

% Test all of these permutations to see which ones are in D
tf = ismember([ii(:), jj(:)], D, 'rows');
然后计算
var

var = sum(tf);

如果处理的是非整数,则应使用
ismembertol
来处理可能的浮点错误。

您可以使用
'rows'
输入来检查数组是否是矩阵中的一行

tf = ismember([ii,jj], D, 'rows');
您还可以同时检查
ii
jj
的多个值

% Create all permutations of ii and jj
[ii,jj] = ndgrid(1:20, 1:30);

% Test all of these permutations to see which ones are in D
tf = ismember([ii(:), jj(:)], D, 'rows');
然后计算
var

var = sum(tf);

如果您处理的是非整数,则应使用
ismembertol
来处理可能的浮点错误。

为了可读性,请正确缩进
If
中的
语句。为了可读性,请正确缩进
If
中的
语句。