史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

更改金额和暗淡

这行代码让你提高你的眉毛在迷惑?

c =总和(A, [1 - 2])

如果是这样,你可能不会让有经验的MATLAB用户仔细研究发布笔记的习惯,逐行,每六个月。所以,让我来告诉你关于这个变化总和和其他相关功能。

我认为总和作为一个vector-wise函数。它的基本定义是表示一个向量上的操作:总和(v),在那里v是一个矢量,返回一个标量元素之和v

v = (1 2 3 4 5 6);总和(v)
ans = 6 * 7分2,愚蠢的。

总和和许多其他功能,MATLAB具有宽容的定义术语“向量”。It can refer to a single column (Px1) or a single row (1xP). The expression总和(v)不在乎。

w = v的总和(w)
w = 1 2 3 4 5 6 ans =你不能愚弄我,答案仍然是21。

如何总和在一个矩阵?在这里我们只是爱魔术方块,特别是当我们谈论资金。

=魔法(3)
1 = 8 6 3 5 7 4 9 2

什么sum ()做什么?还记得我之前说过,我认为总和vector-wise函数,这意味着从根本上它作用于向量。如果你通过一个矩阵,矩阵作为一个治疗堆栈的向量。具体地说,它将把矩阵列向量的堆栈,计算每个人的总和。

sum ()
ans = 15 15 15

过去二十年(多一点)总和函数接受一个可选的参数,我们称之为昏暗的。这个观点让你改变总和将一个矩阵(或多维数组)视为一堆向量。例如,电话金额(2)告诉总和治疗一个堆栈的行向量,计算每一个的总和,导致一个包含行和列向量。

金额(2)
ans = 15 15 15

当然,幻方有相同的行和列的金额,这就是为什么一个魔法广场这个例子可能是一个糟糕的选择。然而,我的雇佣合同要求我使用魔法(3)在每一个机会。

现在,假设我有一个RGB图像,FMxNx3,我想计算三个组件的每个图像的总和,F (:,: 1),F (:,: 2),F (:: 3)吗?在MATLAB历史的大部分时间里,我们会告诉你:计算的列和然后计算行和结果。(或者你可以做其他方式的圆,得到同样的回答。)

F = imread (“peppers.png”);c =总和(sum (F, 1), 2)
c (:: 1) = 23746472 c (:,: 2) = 13054194 c (:,:, 3) = 11331211

好吧,假设我想计算的总和所有的元素F吗?历史的答案:转换F一个列向量使用表达式F (:)然后调用总和

总和(F (:))
ans = 48131877

但这些编码模式所以R2018a。R2018b释放,昏暗的也可以是一个向量,它调用字符串“所有”(或“所有”)。计算的总和的三个组件图片现在可以:

sum (F [1 - 2])
ans (:: 1) = 23746472 ans (:,: 2) = 13054194 ans (:,:, 3) = 11331211

和计算的总和的三维数组的元素可以是:

总和(F (1 2 3))
ans = 48131877

sum (F,“所有”)
ans = 48131877

总结后的一切景象,似乎需要总结,你可以看看这些其他MATLAB vector-wise函数也有这个新的昏暗的行为:所有,任何,界限,马克斯,最小值,的意思是,中位数,模式,刺激,性病,var

让我给你留下一点编程与这些功能相关的建议。如果你确定输入参数传递给一个函数是一个向量(因为你自己构造或计算的),那么您可以安全地使用输入语法,等等总和(v)。否则,我建议你总是提供可选的昏暗的参数避免某些模棱两可与MATLAB的宽容的定义“向量”。




发表与MATLAB®R2019a

|
  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。