0

だから私はテキストファイルを持っています。それをmatlabに読み込んでtextscan、大きな配列を小さな配列または行列に分割する必要があるので、与えられた数値を使用して静的平衡方程式を解き、サポート反応を見つけることができます。

これは、それをスキャンするための私のコードです

function [C]= read_input(input)


   fid = fopen (input);
   C = textscan(fid,'%s', 'Delimiter', '\n', 'CommentStyle', '#');
   C = C{:};
   fclose(fid);

これをC配列として取得します

ans =

'2 1'
'0.0 1.0 1.0'
'5.0 3.0 0.0'
'11.0 3.0 2.0 -9.0'
'0.1 3.0 1.0 1.0'
'0.0 1.0 1.0'
'10.0 4.0 -2.0 9.0'
'1.0 1.0 1.0'
'1.0 1.0 1.0'
'1.0 1.0 1.0'
'0.0 1.0 0.0'
'0.0 1.0 1.0'
'1.0 1.0 0.0'
'F 1.0 6.0 -7.0'
'F 4.0 1.0 1.1'
'F 1.0 8.0 1.0'
'F 6.0 1.0 0.0'
'M 0.0 9.0 1.0'
'M -1.0 1.0 0.0'

これは私の元のtxtファイルでした

外力とモーメントの数

2 1

外力が適用される点の座標

xyz

0.0 1.0 1.0 5.0 3.0 0.0

外力の大きさと方向

F dx dy dz

11.0 3.0 2.0 -9.0 0.1 3.0 1.0 1.0

外部偶力モーメントが適用される位置

xyz

0.0 1.0 1.0

外部偶力モーメントの大きさと方向

ミューズ

10.0 4.0 -2.0 9.0

サポートの場所

xyz

1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0

タイプ (F/M) と反応の方向

タイプdx dy uz

F 1.0 6.0 -7.0 F 4.0 1.0 1.1 F 1.0 8.0 1.0 F 6.0 1.0 0.0 M 0.0 9.0 1.0 M -1.0 1.0 0.0

4

1 に答える 1

0

これには 2 つの方法があります。文字列セル配列として入力してから数値に変換するか、数値として直接入力します。

1>セル配列からのデータの取得は、可変長であり、異なる量では一度に入力できないため、個別にする必要があります。

temp = str2num(C{1,1}); 
num_forces= temp(1);
num_moments = temp(2);

2>この例にあるように数字で入力することをお勧めします

input_text = textscan(fid,'%s', 1,'delimiter','\n'); % Read header line
HeaderLines{1}=input_text{1};
input_text = textscan(fid,'%f %f',1,'delimiter','\n');
[num_forces,num_moments] = input_text{1,:};

これにより、コードが大きくなりますが、はるかに扱いやすくなります。

于 2013-09-29T00:54:17.147 に答える