我得到了下面的错误与MATLAB
程序工作时:错误使用 - 矩阵尺寸必须同意
Error using - Matrix dimensions must agree
我注意到,矩阵的大小我想从对方减去分别为:
firstMatrix --> 425x356
secondMatrix --> 426x356
我怎样才能让他们的相同的大小,并继续做我的减法过程?
我试过reshape
,但这里的元素数似乎必须相等。
谢谢。
我得到了下面的错误与MATLAB
程序工作时:错误使用 - 矩阵尺寸必须同意
Error using - Matrix dimensions must agree
我注意到,矩阵的大小我想从对方减去分别为:
firstMatrix --> 425x356
secondMatrix --> 426x356
我怎样才能让他们的相同的大小,并继续做我的减法过程?
我试过reshape
,但这里的元素数似乎必须相等。
谢谢。
您的矩阵具有不同数量的元素,因此在这里使用reshape
没有意义(因为它保留了元素的总数)。你必须抛弃在更大的矩阵的线路之一做减法之前:
举例来说,你可以放弃最后一行:
firstMatrix - secondMatrix(1:end - 1, :)
或丢弃的第一行:
firstMatrix - secondMatrix(2:end, :)
或者,您可以使用默认值填充较小的矩阵(,例如NaN
或零),如另一个答案中所建议的那样。
你错过了在firstMatrix
一排那么可以试试:
firstMatrix=[firstMatrix;zeros(1,356)];
这将在firstMatrix
末尾加零的行,从而导致的426x356
我觉得两个答案缺少重点。 Blithely减去两个不同大小的数组忘记了那些数组不仅仅是数字。数字一定意味着什么。否则,他们只是没有意义。
同样,从开头或结尾简单删除一行可能是错误的,或填充零。只有你知道数字的意思,以及为什么这些数组的大小不一样。所以只有你可以决定什么是适当的行动。
填充,删除,插入,做任何这些事情可能都是正确的。或者您可能会意识到您的代码中存在一个创建这些数组的错误。
也许插值更好,这确实取决于OP来决定。但重要的是要注意,获得这样的两个数组并不一定是一个错误。例如,如果你计算y轴方向的图像的方向渐变,你肯定会错过一行。因此,如果您的图像处理算法要求您从原始图像中减去结果,您将面临有问题的确切问题。 –
@EitanT - 是的,但是如果你认为差异后的结果是相同的大小,那么它确实是一个错误,一个思想错误。您的代码将无法正常运行,因为阵列大小不一致。这与任何其他类型的错误一样多。 – 2013-09-02 15:04:03
我同意这个问题。 @Simplicity应该检查*为什么*这些矩阵是不同的,减法的目的是什么! – Schorsch