我有两个大小相同的数组ux
和uy
,我想将它们组合成一个向量的单元格数组,以便U(1,1)
包含一个由{{1}组成的向量}和`numel(U)= numel(ux)= numel(uy)'
组件uy(1,1),ux(1,1)
和ux
表示图像渐变的单位矢量。组件数组由元素乘法创建:
uy
我需要能够多次访问每个向量,并将它们称为ux = I1x./I1mag;
uy = I1y./I1mag;
和dot
的参数,并且使向量数组比创建ad hoc向量更快更方便对于调用它的每次迭代中的每一个。
由于
编辑以进一步明确:
假设我有一个数组
cross
和另一个大小相同的数组
uy = (1,2,3;4,5,6);
我需要yx向量,所以我们的例子是
([1,9],[2,8],[3,7]; [4,6],[5,5],[6,4])
请问最有效的方法是什么?我将获得每个像素与其邻居的点积,反之亦然,因此每个向量将使用16次,完整数组包含10 ^ 4或10 ^ 5个元素...
感谢您的继续帮助。
答案 0 :(得分:1)
您可以创建两个图层。一层包含 ux ,另一层包含 uy 。
library(xml)
library(rentrez)
pubmed_parsed <- function(term, n=100){
df <- data.frame(ATitle = character(), JTitle = character(), MeshTerms = character(), Abstract = character(), FAuthor = character(), LAuthor = character(), stringsAsFactors = FALSE)
IdList <- entrez_search(db = "pubmed", term = term, retmode = "xml", retmax = n)
for (i in 1:n){
XmlFile <- entrez_fetch(db = "pubmed", id=IdList$ids[i], rettype = "xml", retmode = "xml", parsed=TRUE)
Parsed <- xmlRoot(XmlFile)
df$ATitle[i] <- xpathSApply(Parsed, "/PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Title", xmlValue, simplify = FALSE)
df$Abstract[i] <- xpathSApply(Parsed, "/PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Title", xmlValue, simplify = FALSE)
}
df
}
结果将是:
ux = [10 8 7;6 5 4];
uy = [1 2 3;4 5 6];
xy(:,:,1) = ux; // [10 8 7;6 5 4]
xy(:,:,2) = uy; // [1 2 3;4 5 6]
aaa=xy(1,1,:); // [10 1]
bbb=xy(1,2,:); // [8 2]
dot(aaa,bbb)
答案 1 :(得分:1)
如果您真的希望它是一个单元格向量,其中每个元素都是[1 x 2]
向量,请使用mat2cell
:
ux = rand(15,1);
uy = rand(15,1);
U = [ux, uy];
K = mat2cell(U,ones(size(U,1),1),2);
但正如其他人所指出的那样,U = [ux, uy]
就足够了,因为你可以调用U(1,:)
来获得完全相同的结果,而不必担心细胞。
如果您想要对两个向量上的dot
产品进行计算,arrayfun(@dot,ux,uy)
可以逐个完成该工作。