扩大
内容
背景
Matt Fig是MATLAB中心的主要贡献者之一。尽管他已经中断了两年多,但他仍然是Answers上排名第10的贡献者,在File Exchange上排名第14的下载最多的作者。
扩大
我今天选择的是Matt的一个贡献,它出现在我硕士论文的代码库的某个地方。我在处理大型三维CT图像,计算速度很重要。它是这样做的:
X = magic(3) xexpanded (X,[3 2])
x = 8 1 6 3 5 7 4 9 2 xexpanded = 1 6 6 8 8 8 8 1 1 1 6 6 8 8 1 1 6 6 5 7 7 3 3 3 3 5 5 5 7 7 3 3 5 5 7 7 4 4 9 9 2 2 4 4 9 9 2 2 4 4 9 9 2 2
大家可以看到x沿着行展开了三次,沿着列展开了两次([3 2])。展开也适用于n维数组,但有一个限制,即展开必须与维数匹配。这可以通过第二次呼叫来避免repmat沿着更高的维度展开。
克隆亚麻
二维展开运算一直是可能的克隆亚麻,但它需要创建一个1矩阵,至少在我读研究生的时候,它比扩大.因为我使用的是三维图像,所以这不是一个选择。
xkron = kron (x)的(2))
xkron = 1 6 6 8 8 8 8 1 1 1 6 6 8 8 1 1 6 6 5 7 7 3 3 3 3 5 5 5 7 7 3 3 5 5 7 7 4 4 9 9 2 2 4 4 9 9 2 2 4 4 9 9 2 2
R2015a介绍repelem
从三月的第一周发布的R2015a开始,有一个新的功能,做同样的事情,扩展和更多内建在MATLAB: meetrepelem.
xrep = repelem (x 3 2)
xrep = 1 6 6 8 8 8 8 1 1 1 6 6 8 8 1 1 6 6 5 7 7 3 3 3 3 5 5 5 7 7 3 3 5 5 7 7 4 4 9 9 2 2 4 4 9 9 2 2 4 4 9 9 2 2
进入三维空间:
xrep3 = repelem (x, 3、1、2)
xrep3 (:: 1) = 8 1 6 8 1 6 8 1 6 3 5 7 3 5 7 3 5 7 4 9 2 4 9 2 4 9 2 xrep3 (:,: 2) = 8 1 6 8 1 6 8 1 6 3 5 7 3 5 7 3 5 7 4 9 2 4 9 2 4 9 2
repelem在向量上也可以改变重复的次数,这对于构建向量或运行长度编码.
V123 = repelem([2 4 7],1:3)
V123 = 2 4 4 7 7 7 7
R2015a其他
浏览发布说明对于R2015a,并且有机会在R2015a预发布上击败过,这里有一些我最喜欢的新功能:
- 离散化——类似于histcounts或histc但跳过了直方图计数部分。
- 数组大小限制——有助于意外地创建会导致内存耗尽的大型数组。
- 标签完成对象创作-终于!
- ismembertol和uniquetol-是成员和独特的宽容;这样我就能少打几通电话离散化.
评论
谢谢马特提供的扩大功能;它已经非常有用将近6年了!
- 类别:
- MATLAB的基本知识,
- 选择,
- 实用程序
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。