PhysicalQuantity

版本1.1 (98.4 KB) Rody Oldenhuis
强类型的物理量

46下载

更新2019年9月8日

从GitHub

在GitHub上查看许可证

# PhysicalQuantity

我一直想知道为什么编程语言只实现数学中使用的数字集?(int8, uint64,等等),?(complex()等),?(双的,单的,…)等等。对于任何物理学家来说,有一种表示物理量的数据类型是有意义的;既有数值(double)又有度量单位的东西。最好,这种数据类型可以直观地适用于各种标准操作——根据艾萨克·牛顿(Isaac Newton)的理论,质量乘以长度除以时间²应该得到一个力,但同样的一组操作永远不可能等于面积。

此提交就是这种数据类型的实现。

准备工作:

—将“PhysicalQuantity”和“PhysicalVectorQuantity”目录放在
MATLAB搜索路径,递归

会话示例:

>> L =长度(4,'m')
L =
4米

>> R =长度(2,'ft')
R =
2英尺

>> A =面积(L*R, 'm^2')
一个=
2.4384e+00平方米

让我们检查一下:1英尺= 0.3048米,所以
2英尺* 4米= 2*0.3048 * 4 = 2.4384平方米。太酷了!

试试下面的方法:

>> A =面积(L*L*R, 'm^2')
使用Area时出错(第13行)
不能从维度为[L]³的数量中创建“Area”(尺寸[L]²)。

>> A =面积(L*R, 'm^3')
使用Area时出错(第13行)
给定字符串([L]³)暗示的维度与Area ([L]²)的维度不兼容。

>> tan(面积(L*R, 'm^2'))
无法计算Area的tan()。

角是无量纲的,在这个框架中被视为特殊的:

>> theta =角度(-1.2,'deg')
θ=
-1.2度

> > cos(θ)
ans =
9.997806834748455e- 01% <-实际上与cosd(-1.2)相同

>> =角(0.5,'rad')
φ=
500毫弧度

#概述

在物理学中,量的单位与量本身有着错综复杂的联系。通常,具有不同单位的量不能在同一操作中使用,除非它们之间存在某种转换—您不能“将苹果添加到橘子中”。

这与大多数编程语言中的数据类型没有什么不同。当你把两个整数相除时,你期望得到什么?添加布尔字符?如果没有某种形式的皈依,你是无法做到这一点的。

因此,创建一个将物理单元考虑到所有操作的数据类型是有意义的。最好,这种数据类型也非常容易使用,并且在以一种物理上毫无意义的方式使用它时产生易懂的错误消息。

这正是这个工具集的目的所在。

#如何使用

pysicalquantity是这样从头构造的:

Q = (<值>,<单位>)

在PhysicalQuantity目录中查看当前的概述
万博1manbetx支持数量< >。<值>可以是任何数值(包括
稀疏、复杂等等)。应该是指定任意值的字符串
支持的长万博1manbetx/短单元名(见下文),可能前缀为
si乘法器(用于公制单位)。多个单元可以通过
以下操作:

‘*’:相乘
“/”:鸿沟
“^”:取幂

例子:

F =力(300,'牛顿')
r =密度(2,'kg/m^3')

获取可用单元的列表:

>> L =长度();
> > L.listUnits ()
长度支持以下测万博1manbetx量单位:
-中国哩
-秒差(pc)
-天文单位(AU)
-英尺(ft)
-弗朗(毛皮)
-英寸(英寸)
-光年(光年)
-米(m)
-英里(米)
-海里(n.mi)
- smt (smoot)
-法定英里(st.mi)
-码(码)
- Ångström (Å)

兼容单元之间的转换是无缝的:

>> L =长度(20,'码');
> > L(米)
ans =
1.8288 e + 1米

>> P =长度(3,'英寸');
>> Q =长度(18,'英尺');
长度(L*P/Q, '米')
ans =
254毫米

操作按预期工作:

>> L =长度(1,'英寸');
>> t =持续时间(32,'秒');
>> M =质量(18,'lb');
>> F =力(M*L/t/t, '牛顿')
ans =
2.025219058242187 e + 02 milliNewtons

#注意

如果你发现什么奇怪的事情,请提醒我。
最好是在GitHub上提出一个问题:)否则,普通的ol'
电子邮件就可以了。

引用作为

Rody Oldenhuis(2022)。PhysicalQuantityGitHub (https://github.com/rodyo/FEX-PhysicalQuantity/releases/tag/v1.1)。检索

MATLAB版本兼容性
使用R2018b创建
兼容R2016b及后续版本
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

PhysicalQuantity

PhysicalQuantity /框架

PhysicalQuantity /框架/ @PhysicalQuantityInterface

PhysicalQuantity /框架/单位

PhysicalVectorQuantity

PhysicalVectorQuantity /框架/ @PhysicalVectorQuantity

测验

测试/ PhysicalQuantity

测试/ PhysicalQuantity /私人

要查看或报告此GitHub插件中的问题,请访问GitHub库
要查看或报告此GitHub插件中的问题,请访问GitHub库