所以我有一个文本文件,我使用textscan
将其读入matlab现在我有一个大数组,我需要分成更小的数组或矩阵,所以我可以使用给出的数字来解决静态平衡方程和找到支持反应。
这是我在
中扫描它的代码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
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
答案 0 :(得分:0)
有两种方法可以解决这个问题。您输入为字符串单元格数组然后转换为数字或直接输入数字。
1>从单元格数组中获取数据必须是可变长度的单独数据,不同的数量不会让您一次性输入。
temp = str2num(C{1,1});
num_forces= temp(1);
num_moments = temp(2);
2 - ;我希望通过输入this example
中给出的数字来实现它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,:};
这会使您的代码更大但更易于管理。