for文で設定された通りの値が表示されない
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Noruji Muto
am 19 Feb. 2020
Kommentiert: Noruji Muto
am 25 Jun. 2020
for文で計算を行い、所定の条件を満たす時の各値をエクセルに書き連ねていくのですが、
出力されるはずのない値が出力されるといった問題が発生しています。
この質問は、以下のURLの質問に関連しています。
コードの全体像な流れは下記URLのものと同じですが、細かいところは変更してあります。
以下にコードを示します。
clc
clear
close all
L=0.45;
m1=0;
m2=0.225;%ふりこの腕の質量(0.5[kg/m])
g=9.8;
Lcm1=0.25;
Lcm2=0;%支点からばねまでの距離
Lm1=0;%測定器の重心位置(直交座標で推進機の端をx=0とする。)
r=0.004;%[m]%推進機の半径
F=10^-9;
d=0.001;%ころがり摩擦係数(オーダー仮定)
sita_ss=deg2rad(3);%定常振れ角3度→ラジアン化
count=1;
x=0;%ばねの変位
P=0;%ばねにかかる荷重
a=0.03;%支点から推進機がついていない側への腕の長さ(仮定)
for i=0.1:0.01:5
%for j=0.1:0.01:5
for n=0.01:0.01:0.45
m1=m1+i;
% m2=m2+j;
% Lcm1=Lcm1+n;
%Lcm2=Lcm2+n;
Lm1=((m1*g)*(Lcm1+a)+(m2*g)*(L-a))/((m1+m2)*g);
%直交座標で見たときの重心の距離(支点の中心を0とし、推進機方向に距離は+に大きくなる) Lm2=(r+Lcm1)-Lm1;%重心が推進器側かカウンターウェイト側かの判定(+なら推進器側。-なら)
Lm2=abs(Lm1);%重心の支点からの距離絶対値表記。(マイナスの場合はカウンターウェイト側にある)
k1=((m1)*g*sin(sita_ss)+F*(Lcm1))/(Lcm2^2*sita_ss);%ばねに必要なばね定数
baneT=k1*sita_ss*Lcm2^2;%ばねからの復元トルク
k2=(F*Lcm1)/sita_ss;
%k2=(m2)*g*Lcm2-(m1)*g*(Lcm1);%測定器全体の復元トルク
Lcm2=sqrt(k2+m1*g*Lm1/(k1*sita_ss));
if Lcm2<L;
if k2>0;
T=d*(m1+m2)*g;
p=(((m1)*g*(Lcm1))+(F*(Lcm1)))-(baneT+T);%トルクのつり合い式
x=Lcm2*sita_ss;
P=k1*x;
if p>0
% A={'m1','m2','Lcm1','Lcm2','k'};
% A={'m1','Lcm2','k';m1 m2 Lcm1 Lcm2 k;};
A(count,1:10)=[m1,Lcm2,Lm1,Lm2,k1,baneT,k2,T,P,x];
count=count+1;
end
end
end
end
end
filename = 'kekka.xlsx';
xlswrite(filename,A);
m1は、iによって初期値0.1から始まって刻み幅0.01で、5まで増加させるはずです。
(そのつもりで)
Lcm2は、L(つまり0.45)より小さい時にエクセルに書き込まれます。
それにもかかわらず、実際に出力されたエクセルファイルを見てみると、
m1が5より大きいものが出力されていたり、
Lcm2がLよりも大きいものが普通に出力されています。
現段階で解決策は分かっていません。
どなたか良い方法をご存じの方はご教授願います。
0 Kommentare
Akzeptierte Antwort
Hiroki Okawa
am 19 Feb. 2020
for i=0.1:0.01:5
と
m1=m1+i;
を読む限り m1 は 0.1, 0.21, 0.33, ...と増えますね(増加量が増えている)。
m1が 0.1, 0.11, 0.12, 0.13, ...としたい場合
m1 = i;
或いは
for m1 = 0.1 : 0.01 : 5
となるべきではないでしょうか。
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu National Instruments Frame Grabbers finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!