Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 使用管道对矩阵中的列进行迭代_F#_Linear Algebra_Mathnet Numerics - Fatal编程技术网

F# 使用管道对矩阵中的列进行迭代

F# 使用管道对矩阵中的列进行迭代,f#,linear-algebra,mathnet-numerics,F#,Linear Algebra,Mathnet Numerics,我试图将矩阵除以最后一行,每列除以最后一个元素,也就是齐次坐标,然后返回包含除最后一行以外的所有内容的子矩阵。 在Matlab中类似这样的内容: normx = bsxfun(@rdivide,A,A(end,:)); output = normx(1:end-1,:); 由于我是F的新手,我对任何事情都不太确定,但我尝试了以下方法: let hnorm(A:Matrix<double>) = let partialResult = A |> Matrix.iter

我试图将矩阵除以最后一行,每列除以最后一个元素,也就是齐次坐标,然后返回包含除最后一行以外的所有内容的子矩阵。 在Matlab中类似这样的内容:

normx = bsxfun(@rdivide,A,A(end,:));
output = normx(1:end-1,:);
由于我是F的新手,我对任何事情都不太确定,但我尝试了以下方法:

let hnorm(A:Matrix<double>) = 
    let partialResult = A |> Matrix.iterCols (fun col -> col/col.[col.Count-1])
    partialResult.Rows(0,3)
工作顺利

请有人解释一下如何做到这一点,因为我认为我遗漏了一些基本知识或误解了它们


谢谢

如果您在IDE中查看Matrix.iterCols的签名,您将看到它使用的参数是函数向量如果您在IDE中查看Matrix.iterCols的签名,您将看到它使用的参数是函数向量使用mapCols。在F中有一个惯例,iterXXX函数用于副作用。使用mapCols。在F中有一个约定iterXXX函数用于副作用。谢谢!就这样。另外一个问题,既然我要写idx,我就不用它了,在Matlab中有没有像~这样的省略符号?也许smth喜欢有趣的[col->col/col.[col.Count-1]?是的,这正是语法。您可以对不关心的变量使用下划线!就这样。另外一个问题,既然我要写idx,我就不用它了,在Matlab中有没有像~这样的省略符号?也许smth喜欢有趣的[col->col/col.[col.Count-1]?是的,这正是语法。可以对不关心的变量使用下划线
let result = [2;4;6] |> List.map (fun x -> x * x * x)
let partialResult = A |> Matrix.mapCols (fun idx col -> col/col.[col.Count-1])