gpt4 book ai didi

c# - 在 C# ILNumerics Vector 上运行

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:04 26 4
gpt4 key购买 nike

经过一些研究,我决定使用 ILNumerics 作为 C# 中的线性代数包。

但是我在处理矢量范围时遇到了一些问题。我想修改具有移动窗口类型的 Vector 中的值,对该窗口或范围中的值应用函数。

关于如何实现这个的任何想法?我在文档中找不到如何执行此操作。

这是我想做的那种操作:

        ILArray<double> vec = ILMath.array(new [] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0});
Console.WriteLine(vec);
// create a vector range from index 3-5
var range = vec[2, 5];
Console.WriteLine(range);
// modify all values in range
for (int i = 0; i < range.Length; i++)
range[i] += 10.0;
Console.WriteLine(range);
// view modified original vector
Console.WriteLine(vec);

这是行不通的,因为范围不正确并且无法使用索引写入向量。

谢谢。

最佳答案

我有点不确定我是否理解正确。但是您当然可以修改 ILArray。只要确保您了解使用 ILArray 的基础知识以及如何处理不同的数组类型。特别是,prevent from using var in conjunction with ILArray !

了解核心阵列功能:

http://ilnumerics.net/docs-core.html

阅读如何创建函数和处理不同的 ILNumerics 数组类型:

http://ilnumerics.net/GeneralRules.html

我修改了你的例子。如果这不是您需要的,请评论:

ILArray<double> vec = ILMath.array(new[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 });
Console.WriteLine(vec);
// create a vector range from index 3-5
ILArray<int> range = array<int>(2,3,4,5);
Console.WriteLine(range);
// modify all values in range
for (int i = 0; i < 3; i++) // make tree steps. Modify as needed!
vec[range + i] = vec[range + i] + i;
Console.WriteLine(range);
// view modified original vector
Console.WriteLine(vec);

@Edit:根据评论...这可能会让我们更接近您想要实现的目标?

for (int i = 0; i < 3; i++) // make tree steps. Modify as needed!
// dynamic subarrays using ILMath.r()
vec[r(i,i+5)] = vec[r(i,i+5)] + ... ;

请注意,如果您的代码未在派生自 ILMath 的类中定义,则必须使用 ILMath.r(..) 而不是 r(..) .进一步注意,使用 r() 的子数组范围定义可以与字符串定义任意组合。这有助于将其转化为涉及矩阵或 n-dim 数组的情况。

关于c# - 在 C# ILNumerics Vector 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com