for文による繰り返し計算の結果で、所定の条件を満たしたものをエクセルに随時記入していく方法
Mostrar comentarios más antiguos
お世話になります。
この質問は、下記URLの質問に関連した内容になっています。
プログラムの背景等を知りたい方はこちらを参照してください。
for文で作ったいくつかの数式において所定の条件を満たす数値の組み合わせを、
エクセルファイルに書き込んで行きたいのですが、やり方がわかりません。
エクセルファイルへの書き込みのイメージとしては下図のような感じで、
for文内で指定している条件を満たす時の数値をそれぞれ記入していく感じです。
(表上側のm1等の文字類は、後でコード内で使用するものです。)

表の縦方向のセル数(行数)は、
条件式に当てはまる数値の組み合わせがあるだけ生成されるようにしたいのですが、
そのやり方がわかりません。
以下に現状のコードを示します。
clc
clear
close all
L=0.260
m3=0.13
g=9.8
Lcm2=L-Lcm1
F=10^-9
d=0.01%ころがり摩擦係数(オーダー仮定)
for i =0.1:0.1:5
for j=0.1:0.01:5
for n=0.01:0.01:0.26
m1=i
m2=j
Lcm1=n
k=(m2)*g*Lcm2-(m1)*g*(Lcm1)
if k>0
T=d*((m1)+(m2)+m3)*g
p=(((m1)*g*(Lcm1))+(F*(Lcm1)))-(((m2)*g*Lcm2)+T)
if p>0
A=A(1:5,:)%この辺以降がわかりません
A={'m1','m2','Lcm1','Lcm2','k';m1 m2 Lcm1 Lcm2 k}
A(:,1:5)
filename = 'data114514.xlsx';
writetable(A,filename,'Sheet',1,'Range','B1::')
end
end
end
end
end
for文内でやりたい事は以下の通りです。
①m1,m2を0.1を初期値として0.1の刻み幅で5まで増加させる
②Lcm1は0.01を初期値として0.01の刻み幅で0.26まで増加する。
③Lcm2は、=L-Lcm1と定義。Lは0.26で固定
④k>0の時、Tとpの算出に進む。
⑤p>0の時(つまりk>0も満たしているとき),
⑥その時の'm1','m2','Lcm1','Lcm2','k'の値を随時エクセルに書き込んで表を作成
また、
エクセルファイルを作る場所を指定する方法をご存じの方は是非教えていただけないでしょうか?
作ったはずのファイルを検索にかけても見つからない問題が発生しています。
よろしくお願いいたします。
2 comentarios
stozaki
el 11 de Feb. de 2020
7行目のLcm1が未定義となっていますので、定義して頂けますか?
Noruji Muto
el 12 de Feb. de 2020
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre スプレッドシート en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!