我需要在函数中使用for循环,以便找到串联和并联的所有可能弹簧组合的弹簧常数。我有5个数据弹簧因此我通过使用polyfit找到斜率(使用F = Kx)在新矩阵中找到每个弹簧常数(K)。
我创建了一个这样做的函数,但它返回的数据不是矩阵,而是单独的输出。因此,代替KP(并行)= [1 2 3 4 5],它表示KP = 1,KP = 2,KP = 3等。因此,只有最终输出存储在我的工作空间中。这是我对该函数的代码。请记住,我需要在for循环中使用+2的原因是因为我的所有弹簧常数的原始矩阵K是十列,每个奇数都是0. Ex: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] = function_name1(K);
我尝试过: - 抑制和解除代码行(不成功)
非常感谢任何帮助。
答案 0 :(得分: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)就可以了。