1
15
您可以使用函数在一行中执行此操作
NUM2CELL
打破矩阵
结果
注: 我以前用的解决方案 MAT2CELL 而不是 NUM2单元 不是那么简单:
|
2
16
作为个人偏好,我喜欢我的代码尽可能简洁易读。 以下是我将要做的,尽管它不满足您的“无循环”要求:
这将导致 A×D×C 矩阵 Z .
当然,您可以通过使用
|
3
8
这是一个一行解决方案(如果要拆分为第三维度,则为两行):
因此现在:
说明:
上面的内容可能看起来很混乱,但这个想法很简单。
首先,我从三维开始
……困难在于
最后,我将它分解为第三个维度:
所以你可以看到它只需要一个矩阵乘法,但是你必须 重塑 前后矩阵。 |
4
5
我正在处理完全相同的问题,并着眼于最有效的方法。我看到的方法大致有三种,除了使用外部库(即, mtimesx ):
我最近比较了这三种方法,看哪种方法最快。我的直觉是(2)会是赢家。代码如下:
所有三种方法产生相同的输出(phew!)但是,令人惊讶的是,这个循环是最快的:
请注意,从一个试验到另一个试验的时间变化很大,有时(2)是最慢的。随着数据的增加,这些差异变得更加显著。但与 许多的 更大的数据,(3)比(2)。循环方法仍然是最好的。
但是循环法 可以 如果环尺寸比其他尺寸大得多,则应慢于(2)。
所以(2)以一个大因素获胜,在这个(可能是极端的)情况下。可能并不是所有情况下都是最佳的方法,但是循环仍然很好,在许多情况下也是最佳的。在可读性方面也是最好的。走开! |
5
1
不。有几种方法,但总是以循环的形式出现,直接的或间接的。 为了取悦我的好奇心,你为什么要那样做? |
6
1
要回答这个问题, 和 有关可读性,请参见:
输入
例子
来源原始来源。我添加了内联注释。
|
7
1
我强烈建议你使用 MMX toolbox MATLAB的。它可以尽可能快地将n维矩阵相乘。 的优势 MMX 是:
对于这个问题,只需编写以下命令:
这里是所有可能方法的基准。有关更多详细信息,请参阅 question .
|
8
0
我会认为递归,但这是你唯一能做的其他非循环方法。 |
9
0
您可以“展开”循环,即按顺序写出循环中可能发生的所有乘法。 |
Y.C. · 以不同颜色打印x轴上方的y值 2 年前 |
dd24 · 在MATLAB中逐部分执行python程序 2 年前 |
fateme · MATLAB,神经网络 2 年前 |
Marta · 使用*时出错-内部尺寸矩阵必须一致 6 年前 |
Morpheus · x*x^T的Matlab符号计算 6 年前 |
Lawa · 如果列中的一个元素等于零,则将整列设为零 6 年前 |