如何在Matlab中使用多线性函数?

如何在Matlab中使用多线性函数?,matlab,math,Matlab,Math,多线性函数对于每个变量都是线性的。例如,x1+x2x1-x4x3是一个多线性函数。使用它们需要适当的数据结构和算法,以实现快速赋值、因子分解和基本算术 Matlab中是否存在用于处理多线性函数的库?不,没有那么多 例如,interp2和interpn有“线性”方法,正如您所描述的那样有效。但这是供应量的极限。这种形式没有更一般的功能 无论如何,这类函数有一些明显的局限性。例如,当应用于彩色图像处理时,它们通常是一个非常糟糕的选择,因为它们对图像中的中性点有什么影响。强烈建议使用其他功能形式 当然

多线性函数对于每个变量都是线性的。例如,x1+x2x1-x4x3是一个多线性函数。使用它们需要适当的数据结构和算法,以实现快速赋值、因子分解和基本算术

Matlab中是否存在用于处理多线性函数的库?不,没有那么多

例如,interp2和interpn有“线性”方法,正如您所描述的那样有效。但这是供应量的极限。这种形式没有更一般的功能

无论如何,这类函数有一些明显的局限性。例如,当应用于彩色图像处理时,它们通常是一个非常糟糕的选择,因为它们对图像中的中性点有什么影响。强烈建议使用其他功能形式

当然,对于因子分解等操作,总是有一个符号工具箱,但这个工具不是一个速度恶魔

编辑:(其他功能表)

我将使用双线性形式作为示例。这是Photoshop等工具在选择双线性插值时使用的方案。在一组四个像素之间的正方形区域内,我们有

f(x,y) = f_00*(1-x)*(1-y) + f_10*x*(1-y) + f_01*(1-x)*y + f_11*x*y
其中x和y在单位平方[0,1]x[0,1]上变化。我在这里把它写成了一个函数,由正方形四角的函数值参数化。当然,这些值在图像插值中作为这些位置的像素值给出

如前所述,双线性插值在x和y上确实是线性的。如果将x或y固定,则函数在另一个变量中是线性的

一个有趣的问题是沿着单位正方形的对角线发生了什么?因此,当我们沿着点(0,0)和(1,1)之间的路径行进时。由于x=y沿此路径,请在该表达式中用x替换y,然后展开

f(x,x) = f_00*(1-x)*(1-x) + f_10*x*(1-x) + f_01*(1-x)*x + f_11*x*x
       = (f_11 + f_00 - f_10 - f_01)*x^2 + (f_10 + f_01 - 2*f_00)*x + f_00
所以我们最终得到一个沿着主对角线的二次多项式。同样,如果我们遵循另一条对角线,它的形式也会是二次的。因此,尽管这种野兽具有“线性”的本质,但它在任何线性路径上都不是真正的线性。它仅沿平行于插值变量轴的路径呈线性

在三维空间中,我们真正关心的是颜色空间插值的这种行为,主对角线现在将沿着该路径显示立方体行为,尽管函数的名称是“线性”的

为什么这些对角线很重要?沿着对角线会发生什么?如果我们的映射将颜色从RGB颜色空间移到其他空间,那么图像中的中性点沿着路径R=G=B。这是立方体的对角线。问题是,当使用中性渐变对图像进行插值时,在颜色空间转换后的结果中会看到一个渐变,该渐变随着渐变沿对角线一个接一个地通过立方体而从中性颜色移动到一些非中性颜色。可悲的是,人类的眼睛非常能够看到中立与中立之间的差异,因此这种行为至关重要。(顺便说一句,这是彩色喷墨打印机内部发生的事情,所以人们确实很关心。)

选择的替代方案是将单位正方形分割成一对三角形,共享边沿着主对角线。线性插值现在可以在三角形内部工作,沿该边,插值对象纯粹是该共享边端点的函数

在三维空间中,同样的事情也会发生,除了我们将单位立方体分割成六个四面体,所有四面体共享立方体的主对角线。这种差异确实是非常重要的,因为中性梯度与中性的偏差显著减少。事实证明,眼睛对沿其他梯度的偏差不太敏感,因此沿其他路径的损失几乎不会造成太大伤害。中性是至关重要的,我们必须尽可能准确地再现颜色


因此,如果您使用通常称为3-d查找表的映射进行颜色空间插值,这是公认的插值方法(由国际颜色联盟的缩写ICC同意)。

快速搜索文档中的“多线性”只会在统计工具箱中找到条目。如果我错了,请原谅我,但这不只是线性代数的一个特例吗?不管怎样,MATLAB在这方面非常出色?@wakjah-对不起,但一点也不。这就像说,当我们绘制散点图时,我们使用的是图论。是的,函数在某种意义上是线性的,代数在某种程度上是复杂的。但是线性代数是一个非常特殊的研究领域,它与这个问题没有相互作用。你能用一些例子来澄清“其他函数形式在这里是非常受欢迎的”这句话吗?如果我开始举例的话,这会很长,因为我需要解释为什么它们会被优先考虑。我看看我能做些什么。有一件事我不明白,那就是如何实现不同的操作,比如翻译。现在,同质坐标(p.8)可以将转换转化为一个简单的矩阵积,在这里引入一个新的虚拟维度。这是有意义的,因为这样矩阵积就足以实现大多数操作——我还没有考虑如何实现因式分解:它可以通过数据结构以某种方式完成,也许可以通过排序不同的因子、想法?