Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 - Fatal编程技术网

Matlab 矩阵的求交

Matlab 矩阵的求交,matlab,Matlab,我希望得到结果矩阵。 结果矩阵包含满足条件1的所有“WHO”,且存在WHO.exit,但没有特定顺序。注意:whos.exit中的所有元素都是唯一的,whos的结果(条件1)将给出唯一的whos。您可以使用- 或- 由于whos是一个变量,我建议使用其他变量名作为一个良好的实践。您可以使用- 或- 由于whos是一个变量,我建议使用其他变量名作为一个良好的实践。您可以使用 或者,如果您想要一个二进制数组(不像看上去那么优雅) 或 细节 在中查找索引,其.exit的值在两个数组中 [~,~,i

我希望得到结果矩阵。 结果矩阵包含满足条件1的所有“WHO”,且存在WHO.exit,但没有特定顺序。注意:whos.exit中的所有元素都是唯一的,whos的结果(条件1)将给出唯一的whos。

您可以使用-

或-

由于
whos
是一个变量,我建议使用其他变量名作为一个良好的实践。

您可以使用-

或-

由于
whos
是一个变量,我建议使用其他变量名作为一个良好的实践。

您可以使用


或者,如果您想要一个二进制数组(不像看上去那么优雅)


细节 在
中查找索引,其.exit
的值在两个数组中

[~,~,iwe]=intersect(whos,whos.exit);
sum((((c1.*whos.exit)./whos.exit(iwe)')==1)')'

ans =

   0
   0
   1
   0
   1
   0
   0
   0
找到这些值的位置。我只是使用除法,因为一个值除以它本身将显示一个
1
,这告诉我们值在哪里。每行表示我们正在查找的值,列表示该值的位置。第一个值
(whos.exit(iwe(1))
位于位置
3
,第二个值
(whos.exit(iwe(2))
位于位置
5

[~,~,iwe]=intersect(whos,whos.exit)
iwe =

   3
   5
我们只需求和并转置它就可以得到二进制数组

(((c1.*whos.exit)./whos.exit(iwe)')==1)'
ans =

   0   0   1   0   0   0   0   0
   0   0   0   0   1   0   0   0
你可以用


或者,如果您想要一个二进制数组(不像看上去那么优雅)


细节 在
中查找索引,其.exit
的值在两个数组中

[~,~,iwe]=intersect(whos,whos.exit);
sum((((c1.*whos.exit)./whos.exit(iwe)')==1)')'

ans =

   0
   0
   1
   0
   1
   0
   0
   0
找到这些值的位置。我只是使用除法,因为一个值除以它本身将显示一个
1
,这告诉我们值在哪里。每行表示我们正在查找的值,列表示该值的位置。第一个值
(whos.exit(iwe(1))
位于位置
3
,第二个值
(whos.exit(iwe(2))
位于位置
5

[~,~,iwe]=intersect(whos,whos.exit)
iwe =

   3
   5
我们只需求和并转置它就可以得到二进制数组

(((c1.*whos.exit)./whos.exit(iwe)')==1)'
ans =

   0   0   1   0   0   0   0   0
   0   0   0   0   1   0   0   0


您的数据是单元格还是矩阵?如果是矩阵,你怎么会有空行?矩阵,你说哪些空行?我(错误地)假设你的数据在矩阵中。不是四个独立的变量。如果是这样的话,
whos.exit
的最后三行应该是空的。您的数据是单元格还是矩阵?如果是矩阵,你怎么会有空行?矩阵,你说哪些空行?我(错误地)假设你的数据在矩阵中。不是四个独立的变量。如果是这样的话,
whos.exit
的最后三行将是空的
bsxfun
版本如何处理
756
之后的元素,即
whos.exit
的位置是空的?@kkuilla好吧,我在
whos.exit
上用转置
创建了单态维度。因此,
whos
whos.exit
的长度不必相同。@kkuilla,通过检查每个
whos.exit
元素和
whos
的每个元素,并接受其中任何一个元素是否为
true
,+1代表solution@SanthanSalai我知道这一点,但我的问题更多的是因为我假设数据是在一个矩阵中,而不是在四个独立的值中。这些事情都是在阅读速度过快时发生的。@kkuilla是的,问题有点不清楚。。我是在阅读了divakers的答案loll后才得到这个问题的。
bsxfun
版本如何处理
756
之后的元素,即
whos.exit
在哪里是空的?@kkuilla好吧,我在那里用
whos.exit
上的转置创建了单态维度。因此,
whos
whos.exit
的长度不必相同。@kkuilla,通过检查每个
whos.exit
元素和
whos
的每个元素,并接受其中任何一个元素是否为
true
,+1代表solution@SanthanSalai我知道这一点,但我的问题更多的是因为我假设数据是在一个矩阵中,而不是在四个独立的值中。这些事情都是在阅读速度过快时发生的。@kkuilla是的,问题有点不清楚。。我是在读了Divakars的答案后才得到这个问题的。我想你可以使用intersect的第二个输出来得到一个二进制数组,比如
result
@Divakar。我没有意识到需要一个二进制数组。我认为这个问题有点不清楚。生成二进制数组的代码比我预期的要复杂一些,但几乎是一行:-)……解释得很好。这可能更容易理解-
[~,exclusive\u idx]=setdiff(whos1,whos.exit);out=条件1;out(exclusive_idx)=0
@Divakar是的,我根据你的建议添加了一个更简单的版本。不敢相信我没有看到。我想你可以使用intersect的第二个输出来获得一个二进制数组,比如
result
@Divakar。我没有意识到需要一个二进制数组。我认为这个问题有点不清楚。生成二进制数组的代码比我预期的要复杂一些,但几乎是一行:-)……解释得很好。这可能更容易理解-
[~,exclusive\u idx]=setdiff(whos1,whos.exit);out=条件1;out(exclusive_idx)=0
@Divakar是的,我根据你的建议添加了一个更简单的版本。真不敢相信我没看到。
[~,~,iwe]=intersect(whos,whos.exit)
iwe =

   3
   5
(((c1.*whos.exit)./whos.exit(iwe)')==1)'
ans =

   0   0   1   0   0   0   0   0
   0   0   0   0   1   0   0   0
sum((((c1.*whos.exit)./whos.exit(iwe)')==1)')'
ans =

   0
   0
   1
   0
   1
   0
   0
   0