Runhua's Blog

森林睡了,故事醒了

与App扩展共享Core Data

App Group的使用

如果使用 Core Data 作为数据库解决方案,则与 Today 扩展、Action 扩展或 Share 扩展共享您的 Core Data 数据库非常常见。在Filer应用程序中,主要需要将 Core Data 数据与 Finder 扩展共享。 应用程序扩展和包含的应用程序无法直接访问彼此的容器,即使应用程序扩展包嵌套在其包含的应用程序的捆绑包中。幸运的是,苹果可以轻松地与您的扩展共享持...

Swift 创建多个 NSMenu 子菜单栏

嵌套式菜单栏

创建单个子菜单栏 func createSingleSubMenu() -> (subMenu: NSMenu, menuItem: NSMenuItem) { let submenu = NSMenu() let mainDropdown = NSMenuItem(title: "1-2", action: nil, keyEquivalent...

Swift 中的 Assertions 与 Preconditions

错误预处理的两种方法

Swift 中的 Assertions 与 Preconditions Swift 为开发人员提供了两种错误预处理的解决方案:assert(::file:line:) 与 precondition(::file:line:)。两种解决方案的不同点在于函数 assert(::file:line:) 只会在 debug 模式下诊断错误,而函数 precondition(::file:line:)...

在Xcode中调试App Extension程序

Debug for App Extensions

Xcode默认情况下没有为开发人员提供直接启用对扩展应用程序调试的方法。因此如果在程序内部打上断点,在程序执行过程中程序将不会在遇到断点的时候停止,然而大部分情况下调试程序仍然是开发过程中不可或缺的环节。好在Xcode只是默认没有启动对扩展应用程序调试的功能,在实际每次调试过程中启用该扩展即可。 为App Extension程序开启调试功能 在执行程序之前,确保Xcode运行目标(targ...

MATLAB 中的ANFIS函数使用范例

使用训练数据调整Sugeno型模糊推理系统

标注 本文档翻译自anfis 语法 MATLAB中anfis函数的语法如下: fis = anfis(trainingData) fis = anfis(trainingData,options) [fis,trainError] = anfis(___) [fis,trainError,stepSize] = anfis(___) [fis,trainError,stepS...

Swift中的 @discardableResult 关键字

基于RawRepresentable协议

标注 本文翻译自What is @discardableResult 在Swift中编写方法时,您经常遇到一些场景,在这些场景中,您有时想忽略返回值,而在其他情况下,您想知道返回值。@discardableResult属性允许我们启用这两种情况,而无需处理烦人的警告或强调替换。 这是Swift中的一个小功能,但一旦你了解它,你就希望知道它。 如何使用@discardabl...

使用@AppStorage存取自定义格式的列表

基于RawRepresentable协议

@AppStorage简单介绍 @AppStorage 是 SwiftUI 框架提供的一个属性包装器,设计初衷是创建一种在视图中保存和读取 UserDefaults 变量的快捷方法。@AppStorage 在视图中的行为同@State很类似,其值变化时将导致与其依赖的视图无效并进行重新绘制。 @AppStorage 声明时需要指定在 UserDefaults 中保存的键名称(Key)以及默...

Swift中的递归枚举

Recursive Enumerations

递归枚举(Recursive Enumerations)是一种枚举,其枚举的另一个实例作为一个或多个枚举案例的关联值。您通过在枚举案例之前使用关键字indirect来指示枚举情况是递归的,这告诉编译器插入必要的间接层。 例如,这里有一个存储简单算术表达式的枚举: enum ArithmeticExpression { case number(Int) indirect ca...

自适应网络模糊推理系统(ANFIS)Pytorch源码浅析

Pytorch for ANFIS

标注 本文主要分析由James Power开源于Github上的anfis-pytorch代码。 关于ANFIS的基础知识参考浅析自适应网络模糊推理系统(ANFIS) 代码框架分析 ANFIS框架主要分为三个文件: anfis.py 定义ANFIS网络核心的部分。 membership.py 该文件下定义了各种各样的隶属函数。 Experimental.p...

Filer

在macOS上实现鼠标🖱️右键创建文档

Welcome to Filer Filer is an Finder extension for your Mac which enables you to easily create files in supported formats anywhere on the system. This extension is simple and easy to use, completel...

Swift 枚举元素的原始值

What is Raw Value in Enum

作为关联值的替代品,枚举情况可以预先填充默认值(称为原始值),这些值都是同一类型。 这里有一个将原始ASCII值与命名枚举案例一起存储的示例: enum ASCIIControlCharacter: Character { case tab = "\t" case lineFeed = "\n" case carriageReturn = "\r" } 在这里,...

Swift 在Mac上复制文件

FileManager.default.copyItem

注意 在macOS1上使用该功能需要删除App SandBox功能. class File { var filename: String var fileExtension: String init(fileName: String, fileExtension: String) { self.filename = fileN...

在Command Line Tools里面读取文件

自定义Bundle文件

通常,在Command Line Tools里面Xcode无法直接读取外部添加的文档文件。然而可以通过自定义添加一个Bundle来实现对外部文档的读取。 在Xcode里, 选择File –> New –> Target,在Target内选择Bundle,自定义该Bundle的名称,如DataBundle。 将文件添加到此捆绑包中。将文件添加到Xcode,然后确保捆绑包在其目标...

隶属函数Membership Function

模糊推断基础概念

定义 隶属函数(membership function)也称为归属函数或模糊元函数,是表征某一元素是否属于某一集合的模糊概念,与指示函数类似。指示函数定义一个集合中的元素是否属于特定子集合。一元素的指示函数的值可能是0或是1,而一元素的隶属函数会是0到1之间的数值,表示元素属于某模糊集合的真实程度(degree of truth)。 例子 例如质数为一集合,整数3属于质数,其指示函数为1,...

浅析自适应网络模糊推理系统(ANFIS)

模糊推断与神经网络的结合

摘要 本文主要介绍分析由Jyh-Shing Roger Jang于1993年发表的开创性论文ANFIS: adaptive-network-based fuzzy inference system 模糊IF-THEN准则 模糊IF-THEN准则有以下两种常用的形式: IF A THEN B, 其中A与B都是模糊用词。例如If pressure is high, then...

Enum中的关联值

为枚举类型设定类型关联值

集合中的枚举变量设置常量或变量,稍后检查此值。然而,能够将其他类型的值与这些大小写值一起存储有时是有用的。此附加信息称为关联值,每次您将该情况用作代码中的值时,它都会有所不同。 您可以定义Swift枚举来存储任何给定类型的关联值,如果需要,每个枚举情况下的值类型可能不同。类似的枚举被称为歧视联合(discriminated unions)、标记联合(tagged unions)或其他编程语...

函数中的@Escaping参数

闭包作为函数参数

当闭包作为参数传递给函数但在函数返回后才调用,该闭包被称为转义闭包。此时可以在参数类型之前添加@escaping关键字,以指示允许闭包转义。 闭包可以转义的一种方法是存储在函数之外定义的变量中。例如,许多启动异步操作的函数将闭包参数作为完成处理程序。该函数在开始操作后返回,但在操作完成之前不会调用闭包。例如: var completionHandlers: [() -> Void] ...

xclangspec文件分析

使Xcode支持自定义语法高亮

Xcode的程序包路径下存在以.xclangspec为后缀的文件夹。这些文件夹定义了Xcode用到的各种语言的语法说明,为JSON格式的文件。 在Xcode程序包中进入如下文件夹即可找到.xclangspec文件 ~/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/...

自动闭包Autoclosures

如何省略闭包大括号与延迟闭包的执行

自动闭包是自动创建的闭包,用于包装作为参数传递给函数的表达式。它不需要任何参数,当调用它时,它会返回包裹在里面的表达式的值。这种语法便利性允许您通过编写普通表达式而不是显式闭包来省略函数参数周围的大括号。 调用采用自动关闭的函数很常见,但实现这种功能并不常见。例如,assert(condition:message:file:line:)函数对其条件和消息参数进行自动创建闭包;其条件参数仅在...

闭包是参考类型

当为常量或变量分配函数或闭包时实际上是在将该常量或变量设置为对函数或闭包的引用

在在闭包中获取值示例中,incrementBySeven和incrementByTen是常量,但这些常量引用的闭包仍然能够增加它们捕获的runningTotal变量。这是因为函数和闭包是参考类型。 每当您为常量或变量分配函数或闭包时,您实际上是在将该常量或变量设置为对函数或闭包的引用。在上面的示例中,incrementByTen指的是闭包的选择是常量,而不是闭包本身的内容。 这也意味着,...

不确定性变换公式

已知一个随机向量的特性求取另一个随机向量的统计特性

非线性变换公式 设两个随机向量满足如下非线性关系: \[\pmb{y} = \pmb{f}(\pmb{x})\] 记随机向量$\pmb{x}$的均值与协方差分别为 \[\begin{align} &E(\pmb{x}) = \pmb{\mu_x} \\ &E((\pmb{x} - \pmb{\mu_x})(\pmb{x} - \pmb{\mu_x})^T) = \pmb...

INS/DVL组合导航算法

间接法进行导航参数的估计

组合导航估计方法 直接法:将各种导航参数作为主要状态,滤波估值的主要部分为导航参数的估计值。然而直接法建立的状态方程与量测方程一般为非线性的。 间接法:以导航参数的误差作为估计值。通常建模过程中可以忽略二阶小量,所以一般为线性方程。 系统误差模型 误差模型由INS建模与DVL建模导致的误差组成。根据捷联惯性导航系统长期工作时的特点,选择位置误差、速度误差、失准角、陀螺漂移作为状...

多元正态分布

高斯滤波与卡尔曼滤波的核心

数学表达式 设d维度随机变量$\pmb{x}$满足高斯分布,期望与协方差分别为 \[E(\pmb{x}) = \pmb{\pmb{\mu}}\] \[E((\pmb{x} - \pmb{\mu})(\pmb{x} - \pmb{\mu})^T) = \Sigma\] 则随机变量的概率密度函数可以用如下形式来表示: \[p(\pmb{x}) = \frac{1}{(2\pi)^{\fr...

相对熵Kullback-Leibler

变分贝叶斯算法的基础

定义 对于离散变量$P$与$Q$,定义两者散度为 \[D_{KL}(P||Q) = -\sum_i P(i)Ln\frac{Q(i)}{P(i)} \geq 0\] 标注 根据定义知, \[D_{KL}(P||Q) \neq D_{KL}(Q||P)\] 因此在实际使用中,将P作为真实值,Q作为预测值。

在闭包中获取值

意想不到的BUG来源

闭包可以从定义它的周围上下文捕获常量和变量。然后,闭包可以从其正文中引用和修改这些常量和变量的值,即使定义常量和变量的原始范围已不复存在。 在Swift中,可以捕获值的最简单闭包形式是嵌套函数,写在另一个函数的主体中。嵌套函数可以捕获其外部函数的任何参数,也可以捕获外部函数中定义的任何常量和变量。 这里有一个名为makeIncrementer的函数的示例,它包含一个名为increment...