如何在matlab中选择每一行作为元素

时间:2012-06-11 10:35:26

标签: matlab

我在matlab中有一个接受nx1矩阵的函数。

我有一个nx2 dims的矩阵X

如何将矩阵X发送到X的每一行作为元素的函数?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你必须做类似

的事情
for i=1:size(X,1)

  f(X(i,:)');

end

表示您按顺序将每一行传递给函数f,并将其转换为列向量。

如果您希望在行上线性化X,则必须执行以下操作:

Xlin = reshape(X',numel(X),1);
f(Xlin);

答案 1 :(得分:1)

有关索引矩阵的信息和示例,请查看MathWorks网站上的这篇matrix indexing in MATLAB文章。要从矩阵中选择行,您可以执行以下操作:

>> m = rand(5, 2)

m =

    0.8147    0.0975
    0.9058    0.2785
    0.1270    0.5469
    0.9134    0.9575
    0.6324    0.9649

>> m(1,:)        

ans =

    0.8147    0.0975

>> m(end,:)      

ans =

    0.6324    0.9649

矩阵的第一个索引对应,第二个索引对应。这里:作为第二个索引选择相应行的所有列。如果你有一个函数func和上面的矩阵m,你可以将m的每一行传递给func,如下所示:

for i = 1:length(m)
    func(m(1,:)')
end

请注意转置,它将m的每一行转换为2x1数组,即列向量,而不是行向量。