在文档中,我发现了一个函数findfirst
,它能够返回第一个元素的索引,等于给定的索引。
在我的例子中,我有一个向量(或一个一维数组),我想找到第一列,它等于向量。
我知道如何以"困难"的方式做到这一点:使用findnext
迭代第一行,然后检查整个列。但有没有更聪明的方法,虽然我不知道?
设m
为矩阵,v
为向量。然后:
findfirst(c->view(m,:,c)==v,1:size(m,2))
应该返回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