0

我需要在函数中使用 for 循环,以便找到所有可能的串联和并联弹簧组合的弹簧常数。我有 5 个带有数据的弹簧,因此我通过使用 polyfit 找到斜率(使用 F=Kx)在新矩阵中找到了每个弹簧的弹簧常数 (K)。

我创建了一个这样做的函数,但是它返回的数据不是矩阵,而是作为单独的输出。所以不是 KP (Parallel)= [1 2 3 4 5] 它说 KP=1、KP=2、KP=3 等。因此,只有最终输出存储在我的工作区中。这是我为该功能提供的代码。请记住,我需要在 for 循环中为 b 使用 +2 的原因是因为我的原始矩阵 K 具有所有弹簧常数是十列,每个奇数都是 0。例如:K=[1 0 2 0 3 0 4 0 5] --- 这是因为我找到 K(斜率)的原始数据集是十列宽。

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 的尺寸以使其有意义,即它的宽度为 5 个空格,而不是您当前的 10 个空格 - 您将在一分钟内了解原因。

然后我将 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 回答