PDA

查看完整版本 : [求助]matlab提取数据的问题


Johnson
2008-10-29, 23:28
A=
[1 -60 -99.00333
1 -50 215.0179
1 -40 553.9259
1 -30 895.7762
3 -50 -132.0313
3 -40 161.059
3 -30 558.0825
5 -60 -79.41677
5 -50 213.7458
5 -40 439.1436
5 -30 792.5519
7 -30 -82.96359
7 -20 957.4586]

要求:第一列值相同,比如同为1时,第三列中正的最小值和负的最大值。并读取其所在行的全部值放入一个文件。

remnant
2008-10-30, 00:20
直接给源程序吧:
a_vec = A( :, 1 );
a_vec_u = unique( a_vec );
for i = 1 : length( a_vec_u )
b_mat = A( find( a_vec == a_vec_u(i) ), : );
b_mat_neg = b_mat( find( b_mat( :, 3 ) < 0 ), : );
b_mat_pos = b_mat( find( b_mat( :, 3 ) > 0 ), : );
tar_neg = b_mat_neg( find( b_mat_neg( :, 3 ) == max( b_mat_neg( :, 3 ) ) ), : );
tar_pos = b_mat_pos( find( b_mat_pos( :, 3 ) == min( b_mat_pos( :, 3 ) ) ), : );
fid = fopen( [ 'A', num2str(a_vec_u(i)), '.txt' ], 'w' );
fprintf( fid, 'Max negtive:\t' );
fprintf( fid, '%f\t', tar_neg );
fprintf( fid, '\n' );
fprintf( fid, 'Min postive:\t' );
fprintf( fid, '%f\t', tar_pos );
fclose( fid );
end

Johnson
2008-10-30, 21:50
看来学matlab真得在论坛上多游荡一下。论坛里的人让我看到了matlab的强大也看到了身边的确有形形色色的高手。