划分数组的各个部分并使用它们来解决静态平衡方程

时间:2013-09-28 20:57:37

标签: arrays matlab

所以我有一个文本文件,我使用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

施加外力的点的坐标

x y z

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

应用外部情侣时刻的位置

x y z

0.0 1.0 1.0

外部耦合时刻的大小和方向

M ux uy uz

10.0 4.0 -2.0 9.0

支持位置

x y z

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

1 个答案:

答案 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,:};

这会使您的代码更大但更易于管理。