0

我正在生成它们所拥有的列数量不同的矩阵,我需要对这些列中的每一列应用一些方程并分别存储它们的结果(新矩阵中的不同列会很好)。对于我的第一个等式,我将选取部分矩阵并使用它们进行一些分析,例如:

A1 = interpolate((817/2+.5):(908/2),:);
B1 = interpolate((909/2+.5):(1000/2),:);

averageB = sum(B1)/length(B1);
averageA = sum(A1)/length(A1);

tapWithSign = (averageB - averageA) / (averageB + averageA / 2) * 100;

tapA1B1 = abs(tapWithSign);

我测试了我目前拥有的内容,并将这些特定部分正确地拉入了一个新矩阵。当我尝试将它们应用于等式时,问题就出现了。当我应该有 13 个值时,它只给了我一个值(如果我有 13 个列需要评估,则为 13 个值)

4

1 回答 1

1

您的问题出在这一行:

tapWithSign = (averageB - averageA) / (averageB + averageA / 2) * 100;

可以肯定的是我有这个权利:averageB并且averageA是尺寸为(1,13)的向量。您希望tapWithSign具有与这些相同的尺寸。

你需要做的是

tapWithSign = (averageB - averageA) ./ (averageB + averageA / 2) * 100;

你需要./而不是/. A ./ B意思是“将 A 的每个元素除以 B 的每个元素,并将结果放入与 A 和 B 大小和形状相同的矩阵/向量中。” 是矩阵除法,您可以通过在 matlab 提示符 A / B下键入来准确读取它是什么。doc mrdivide

一旦tapWithSign有正确的尺寸,abs(tapWithSign)也会。

于 2012-08-02T14:59:34.607 回答