Matlab:获取向量列表

时间:2011-06-15 23:25:52

标签: matlab

我在Matlab中有一个单行矩阵theta,有几百个值;我想为theta中的每个值创建一个向量。最好我可以简单地将这些值存储在列表中,这样我就可以在列表中使用各个元素的点积;我该怎么做呢?

目前,我的代码是

arrayfun(@(x) [sin(x),0,cos(x)],thetas,'UniformOutput',false);

会生成一堆[1x3 double]个。

3 个答案:

答案 0 :(得分:3)

您也可以创建一个大小为numberOfThetas-by-3的数字数组,而不是创建单元格数组,如下所示:

A = [sin(thetas);zeros(size(thetas));cos(thetas)]'; %'# make n-by-3 by transposing

要计算任意两个向量ij之间的点积,您可以编写

dotProduct = sum(A(i,:).*A(j,:));

答案 1 :(得分:2)

您不必按照strictrude27的建议不必要地构造for循环来重新构建矩阵。有一个很好的内置函数cell2mat可以在一行中为你完成。

假设您的A100元素单元格,每个单元格都包含1x3向量。如果你想收集它们,使A的每个单元格都是一个单独的行,那么命令就是

matrixA = cell2mat(A(:));

答案 2 :(得分:1)

代码的输出是一个单元格数组,其元素是您想要的1x3向量。因此,假设您已经指定了A = arrayfun(@(x) [sin(x),0,cos(x)],thetas,'UniformOutput',false);。可以使用thetas访问与数组A{i}的第i个元素对应的向量。此时,您可以使用for循环来构造一个矩阵,其第i列是与thetas的第i个元素对应的向量。