本周文件交换精选

我们最好的用户提交

扩大

肖恩本周的选择是扩大通过马特无花果

内容

背景

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预发布上击败过,这里有一些我最喜欢的新功能:

  • 离散化——类似于histcountshistc但跳过了直方图计数部分。
  • 数组大小限制——有助于意外地创建会导致内存耗尽的大型数组。
  • 标签完成对象创作-终于!
  • ismembertoluniquetol-是成员和独特的宽容;这样我就能少打几通电话离散化

评论

谢谢马特提供的扩大功能;它已经非常有用将近6年了!

扩大repelem试一试,让我们知道你对它们的看法在这里或者离开评论马特。




发布与MATLAB®R2015a

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。