罗兰关于MATLAB的艺术

将想法转化为MATLAB

总结需要考虑的事情

我只是在帮助别人调试一段给出错误答案的代码。代码返回的输出形状与编码器预期的形状不同。当我们工作时,我确保工作空间浏览器能够显示出来,当我们一步步地遍历算法时,我们能够准确地看到问题发生的地方。这就是召唤总和

内容

默认情况下,列操作

默认情况下,MATLAB通过将列视为单个向量并对其进行操作来执行许多操作。然而,如果数组每列只有一个元素,那么MATLAB将沿着第一个非单元素维度执行操作。

用户问题及解决方案

这是默认行为。然而,对于这个用户的应用程序,他总是希望和沿着第一个维度(沿着列),即使每列只有一个条目

为此,修改后的代码使用了可选的第二个输入参数,.这与其他通常从输入到输出降低维数的函数类似,例如

这是帮助的相关部分总和.我碰巧知道我只需要通过第二个实例昏暗的

h =帮助(“和”);f = strfind (h,“暗”);disp (h (1: f (2) + 5))
SUM元素的和。S = SUM(X)是向量X元素的和。如果X是一个矩阵,S是一个行向量,每一列的和。对于N-D数组,SUM(X)沿着第一个非单维操作。如果X是浮点数,即双或单,则S在本机累积,与X在同一个类中,且S与X在同一个类中。如果X不是浮点数,则S在double中累积,且S具有double类。S = SUM(X,DIM)沿维数DIM求和。

例子

让我们看看这个行为是如何运作的。

n = 4;A = cat(3, pascal(4), magic(4), invhilb(4), hadamard(4), hilb(4))
(:: 1) = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 (:,: 2) = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 (:,:, 3) = -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200 -140 1680 -4200 2800 (:,:, 4) = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (:,:, 5) = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.20000.1667 - 0.1429

总和一个列。

sumA = sum ()
sumA(:,: 1) = 4 10 20 35 sumA(:,: 2) = 34 34 34 34 sumA(:,: 3) = -4 60 -180 140 sumA(:,: 4) = 40 00 sumA(:,: 5) = 2.0833 1.2833 0.9500 0.7595

总和一个沿行。

sumA2 =和(2)
sumA2(:,: 1) = 4 10 20 35 sumA2(:,: 2) = 34 34 34 34 sumA2(:,: 3) = -4 60 -180 140 sumA2(:,: 4) = 40 00 sumA2(:,: 5) = 2.0833 1.2833 0.9500 0.7595

总和一个穿过第三维度。

sumA3 =和(3)
sumA3 = 1.0e+003 * 0.0350 -0.1155 0.2453 -0.1248 -0.1125 1.2123 -2.6858 1.6912 0.2513 -2.6888 6.4912 -4.1788 -0.1338 1.6972 -4.1758 2.8221

试着总结一个沿着第七维度。

sumA7 =总和(7)
sumA7 (:: 1) = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 sumA7 (:,: 2) = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 sumA7 (:,:, 3) = -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200 -140 1680 -4200 2800 sumA7 (:,:, 4) = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 sumA7 (:,:, 5) = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.16670.25000.2000 0.1667 0.1429

这怎么可能呢?

为什么我沿着7维求和时没有误差当我只有一个三维数组时?原因是MATLAB将所有数组视为具有无限维数,其中大多数是尾随单例的。如果我沿着第7维求和,我只对单个元素求和,或者在这种情况下只返回原始数组。

你曾经利用过空间维度吗?

你曾经利用过维度论证吗?或者遇到了一个意想不到的单维度问题?有任何想法,请发布出来在这里




发布与MATLAB®7.4

|

评论

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