在文档中,我找到了一个函数findfirst
,它能够返回第一个元素的索引,它等于给定的索引。
在我的情况下,我有一个矢量(或一维数组),我想找到第一列,它等于矢量。
我知道怎么做" hard"方式:findnext
迭代第一行,然后检查整列。但是有一种更聪明的方式,这对我来说不是很明显吗?
答案 0 :(得分:5)
假设m
是您的矩阵,v
是向量。
然后:
findfirst(c->view(m,:,c)==v,1:size(m,2))
如果找不到向量,则返回0
,如果找到,则返回列号。转向基本元素访问可能会更快,但这也应该可以解决问题。
答案 1 :(得分:0)
这就是我现在的方式。它感觉不是很聪明。我仍然有信心有一种更好的方式,但我现在不能看到它。
来自C / C ++和Python,我看起来有些奇怪。我不知道朱莉娅的好味道。欢迎提出建议。
function findfirstcolumn(A, v)
index = findfirst(A[1,:],v[1])
found = false
while index != 0 && found == false
found = true
for i = 2:size(v)[1]
if A[i,index] != v[i]
found = false
break
end
end
if found == true
return index
end
index = findnext(A[1,:], v[1], index+1)
end
return 0
end