0

直列および並列のばねのすべての可能な組み合わせのばね定数を見つけるために、関数で for ループを使用する必要があります。データ付きの 5 つのスプリングがあるため、polyfit を使用して (F=Kx を使用して) 勾配を見つけることにより、新しいマトリックスでそれぞれのスプリング定数 (K) を見つけました。

そうする関数を作成しましたが、データはマトリックスではなく、個々の出力として返されます。したがって、KP (Parallel)= [1 2 3 4 5] の代わりに、KP=1、KP=2、KP=3 などと表示されます。このため、最終出力のみがワークスペースに保存されます。関数のコードは次のとおりです。b の for ループで +2 を使用する必要がある理由は、すべてのばね定数を含む元の行列 K が 10 列で、奇数がすべて 0 であるためです。例: K=[1 0 2 0 3 0 4 0 5] --- これは、K (勾配) を見つけるための元のデータセットが 10 列幅だったためです。

function[KP,KS]=function_name1(K)
L=length(K);
c=1;
for a=1:2:L
    for b=a+2:2:L
        KP=K(a)+K(b)
        KS=1/((1/K(a))+(1/K(b)))
    end
end
c=c+1;

そして、その関数を呼び出すプログラム

[KP,KS]=関数名1(K);

私が試したこと: - コード行の抑制と抑制解除 (失敗)

どんな助けでも大歓迎です。

4

1 に答える 1

1

うーん...

あなたのコードは機能しているように見えますが、最も実用的な方法で物事を扱っていません

K のサイズを変更して意味をなすようにします。つまり、現在の 10 スペースではなく 5 スペース幅になるようにします。その理由はすぐにわかります。

次に、KP と KS を必要なサイズに調整します (5X5 を実行します。これにより、すべての順列が得られます。現在、三角形のことをしているように見えます。あまり心配する必要はありません)。約 50,000 のバネ定数でこれを行う場合を除きます)

したがって、私のコードは次のようになります

function[KP,KS]=function_name1(K)
L=length(K);
KP = zeros(L);
KS = zeros(l);
c=1;
for a=1:L
    for b=1:L
        KP(a,b)=K(a)+K(b)
        KS(a,b)=1/((1/K(a))+(1/K(b)))
    end
end
c=c+1;

次に、スプ​​リング 1 と 4 の並列の組み合わせが必要な場合は、KP(1,4) または KP(4,1) でうまくいきます。

于 2013-03-07T06:45:18.767 に答える