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 に答える