Matlab将矩阵乘以另一个矩阵的各个部分并获得对角元素

时间:2016-03-17 22:39:21

标签: matlab optimization linear-algebra matrix-multiplication matrix-math

这篇文章的标题可能有点令人困惑。请允许我提供一些背景信息,然后详细说明我的问题。作为参考,我问的问题是在结尾处,并用粗体字母表示。我提前提供了一些代码,概述了我目前在解决问题的方法。

基本上我尝试做的是内核回归,通常使用单个测试点x和一组训练实例formula来完成。可以在维基百科here上找到对此的引用。我使用的内核是RBF内核,可以找到维基百科的参考资料here

无论如何,我有一些用Matlab编写的代码,这样就可以快速完成x的单个1 x p实例。我想做的就是这样做,这样我可以很快估计出很多点,比如说m x p

为了避免符号混淆,我会将训练实例表示为Train,将我想要的实例估计为Testformula和{{0 }}。还需要提到的是,我想估计每个m点的数字向量。对于单个点,此向量的大小为1 x v。现在我需要m x v。因此,Train还会有一个与之关联的知识值的向量TSformula。最后,我们需要一个大小为1 x v的sigma向量。这表示为Sig

这是我到目前为止的代码:

 %First, we have to get the matrices to equivalent size so we can subtract Train from Test

 tm0 = kron(ones(size(Train,1),1),Test) - kron(ones(size(Test,1),1),Train);

 %Secondly, we apply the Euclidean norm sq by row and then multiply each of these results by each element (j) in Sig times 1/2j^2
 tm3 = exp(-kron(sum((tm0).^2,2),1/2./(Sig.^2)));

现在,此时tm3(m*n) x v矩阵。 这就是我的问题所在:我现在需要将TS'(TS转置)乘以n x v中每个tm3大小的细分受众群(有{{ {1}}这些段中的{1}},获取每个结果段的对角线元素(在乘法之后m段中的一个将是m,因此每个对角元素块将为{{1意味着得到的矩阵是v x v)并将这些对角元素加在一起以产生1 x v大小的矩阵。最后,我需要将此m x v矩阵中的每个条目m x 1除以对角线i的{​​{1}}行中的每个m x 1元素大小的矩阵,产生v大小的结果矩阵。

我希望所有这一切都有道理。我确定可以使用某种技巧,但我还没想出来。非常感谢任何帮助。

编辑1:我被要求提供更多示例来帮助演示我想要做的事情。以下代表我正在谈论的两个矩阵,ithm x v

formula

如您所见,m x vTS转置)为tm3TS'TS。在tm3中,有一些大小为v x n的块 - 这个大小的tm3块。请注意,mn x v的大小为n x v。这意味着我可以将m乘以TS'的单个块,其大小为v x n。这将导致矩阵的大小为TS'。我想执行此操作 - 单独将tm3乘以n x v大小的v x v块,将生成TS' n x v个矩阵。

但是,从这里开始,我想从这些tm3矩阵中获取对角线元素。因此,对于单个m矩阵,使用v x v表示:

最终,我会为每个v x v v x v矩阵执行此操作,为我提供如下所示的内容,其中s是a m矩阵:

如果我将这最后一个矩阵表示为v x v,其大小为mth,则将行中的元素相加以生成我正在寻找的v x v向量是微不足道的。我将此向量称为Q。但是,我希望将每个m x v标量值除以矩阵m x 1的相应行,以生成另一个C矩阵:

这是我正在寻找的最终矩阵。希望这有助于说清楚我在寻找什么。感谢您抽出宝贵时间阅读本文!

思考:我非常确定我可以通过执行mQ转换为m x v矩阵来完成此操作,然后将其复制另一个tm3矩阵celltc1 = mat2cell(tm3,repmat(length(Train),1,m),length(Sig)) TS次。最后,我可以执行m之类的操作,这会给我cell个单元格填充我正在寻找的tc2 = mat2cell(TS',length(indirectSigma),repmat(length(Train),1,m))'矩阵。我可以从那里开始。但是,我不确定这些tc3 = cellfun(@(a,b) a*b, tc2,tc1,'UniformOutput',false)操作的速度有多快。有谁评论?我担心它们可能会很慢,所以我更倾向于在普通矩阵上执行操作,我知道它很快。谢谢!

0 个答案:

没有答案