如何将二维数组变量分配给 Swift 中的大浮点矩阵?

塞尔哈特·索耶

我需要在 Swift 中存储并经常使用几个相对较大的矩阵(每个 160 x 128,准确地说)。为了初始化一个恒定的2D双阵列来保存矩阵,我写了这样的事情:let myMatrix = [[3.2, 5.8976, 5.2], [1e-4, 0.3, 8.56]]这个 2 x 3 阵列只是一个例子。当您尝试编写 160 x 128 浮点矩阵时,需要很多行。我使用专门为此编写的 MATLAB 脚本输入了这个长表达式。但是,当我复制粘贴这个大矩阵的很长的表达式时,XCode 停止响应。它无法处理“ViewController.swift”文件中如此大的数据行。因此,我需要找到另一种方法将我的矩阵存储在 iPhone 应用程序中。我已经检查了要使用的“XML”、“plist”和“CSV”文件格式。不幸的是,这些都不适合我。

亚历山大

欢迎使用 StackOverflow。这里有几个问题在起作用,我将尝试解决所有问题:

没有二维数组

从技术上讲,Swift 没有 2D 数组(直到你实现了一个)。您所描述的是嵌套数组,它们的特征略有不同:

  1. 不能保证这样的数组具有相同大小的行。第一个可能是 160 宽,第二个可能是空的。
  2. 它具有较差的性能特征,因为它是一个数组数组,而不是一个包含所有元素的连续数组。也就是说,它存储...

    • 更像:

      数组数组

    • 比喜欢:

      连续存储

ViewController 应该做什么

它应该控制视图。存储 160x128 矩阵对我来说听起来不像“控制视图”,因此,将此类代码放在那里是完全不合适的

编译大型表达式

在没有类型提示的情况下,Swift 类型检查器将用于推断我们代码中的类型。例如,虽然[[1, 2, 3], [4, 5, 6]]显然看起来像 an Array<Array<Int>>,但它实际上可以用于初始化 a ArraySlice<Set<Double>>,如果这是上下文所要求的。

在 Swift 中,文字表达式可以是多种类型中的一种。用于阵列方括号语法实际上可以用于初始化任何类型的符合ExpressibleByArrayLiteral(例如SetArraySlice或任何这样的类型你发明自己)。同样,整数常量可以被用于初始化的任何类型的符合ExpressibleByIntegerLiteral,例如FloatDouble,和的每一个变体(U)Int(64|32|16|8)总之,一个数组字面量有很多可能的类型,这需要类型检查器很长时间来评估。

您可以通过完全指定类型(例如给予的变量类型提示帮助这个沿:let matrix: [[Double]] = [ ... ]但即使是,这个数据远远太大,可适当放入斯威夫特文件。

使用序列化格式

......是正确的方法。在这种情况下,我认为 CSV 可能是最合适的(它非常擅长存储这样的方形表格数据)。您说您“检查了“XML”、“plist”和“CSV”文件格式”(我不知道“检查”在这里是什么意思)并且“对我有用”(对不起作用)? 这是什么意思,代码有一些检查if (user == Serhat) dontWork()?)。这是一个好的解决方案的正确方法。如果你被困在那里,你应该发布一个问题,提供更多关于到底出了什么问题的细节,以便其他人可以真正帮助你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将匹配表达式的值分配给 Scala 中的二维数组元素?

如何在Java中随机将显式值分配给二维数组

如何将excel文件数据的元素分配给Python中的二维矩阵?

将值分配给二维python数组中的单个单元格

将列表中的每个值分配给二维数组

如何使用awk从文件中读取矩阵并将其分配给bash脚本中声明的二维数组

如何从excel文件中读取包含符号的值(例如:[1,2,3]作为列表或一维/二维数组)并分配给python中的变量?

我在 RUBY 中的二维数组有问题,它没有将值分配给它

SWIFT:将结构数组中某项的所有值分配给一个变量

如何将二维变量分配给数组

在Swift3中将一维数组转换为二维数组的效率如何

如何将一列整数附加到 numpy 中的二维浮点矩阵?

Swift中的二维数组

如何将数组中的字符串分配给 C 中的变量(来自函数)?

如何将方法数组中的新值分配给变量?

如何将列表中的项目分配给变量

如何将数据分配给组件中的变量?

如何将列表中的对象分配给变量?

在Swift中,有没有一种方法可以将数组元素分配给多个变量?

如何将一维数组分配给二维数组?

将二维数组值分配给变量

SWIFT如何在二维中对二维数组进行排序而无需转置

如何将二维矩阵值存储在变量中?

如何将多维数组分配给二维数组?

如何将矩阵的值分配给bash中的变量

Swift:如何将字符串数组分配给UITextFields数组的text属性?

Swift,发出将数组分配给变量的问题

如何将记录集值分配给二维数组

将值分配给R中数组的特定维