MATLAB

2011-07-13 12 views
2

の各100反復から最大行を見つけるiはマットファイルを作成している:私は以下のようにいくつかのコードと結果表示を実行するために、このマットファイルを使用し、このマットのファイルを読み込んだ後MATLAB

S = load abc.mat 

S = data1: [81x30 double] 
    data2: [59x28 double] 
    data3: [20x28 double] 

を(:5:30〜100)、コマンドウィンドウ

disp([Ball Trial A B C D]) 

30.0000 1.0000 0.4498 0.3652 0.4601 0.3777 

30.0000 2.0000 0.5745 0.5006 0.5671 0.4940 

... 

30.0000 99.0000 0.5209 0.4420 0.5112 0.4311 

30.0000 100.0000 0.4078 0.4142 0.3974 0.4060 

35.0000 1.0000 0.4303 0.3563 0.4083 0.3356 

35.0000 2.0000 0.5239 0.4469 0.5174 0.4396 

... 

35.0000 99.0000 0.6009 0.5442 0.5985 0.5410 

35.0000 100.0000 0.5327 0.4756 0.5037 0.4503 

... 

100.0000 99.0000 0.3015 0.3273 0.3027 0.3287 

100.0000 100.0000 0.4416 0.3960 0.4533 0.4088 

で拳列がボール30からボール100であり、第2列は、次いで第3、第4、第5及び第6のための結果100の繰り返しでありますA、B、C、D

[c t] = max(max(C.'));% variable c is the max of C in each ball (index) t. 

私は、各インデックス(ボール)にmax cを含む折れ線グラフをプロットしたいと思います。ここで、x軸はt(ボール30〜100)、y軸は変数Cです。どのように描画する?また

と.txtファイル内の各インデックス(ボール)の最大のCの行を表示...

結果:

30.000 23.000 0.23 0.45 0.76 0.32 

35.000 19.000 0.43 0.67 0.23 0.54 

... 

100.000 43.000 0.54 0.11 0.54 0.99 

def.txt誰も私をプロットすることができませんグラフとdef.txtを取得する?ありがとう...

答えて

2

これはACCUMARRAYの仕事です。

%# data is the content of abc.mat 
load('abc.mat') 

%# find x, corresponding indices into y 
[x,~,yIdx] = unique(data(:,1)); 

%# in each column, collect the maximum for each yIdx 
y = zeros(length(x),4); 
for col=1:4 
    y(:,col) = accumarray(yIdx,data(:,col+2),[],@max); 
end 

%# plot 
ph=plot(x,y); 
set(ph,{'DisplayName'},{'A';'B';'C';'D'}) 
legend() 

%# save result to file 
dlmwrite('def.txt', [x y]) 
+0

???インデックスが行列の次元を超えています。 ==> 10のテストでエラーが発生しました。 y(:、col)= accumarray(yIdx、S(:、col + 2)、[]、@ max); – noob

+0

私は前に間違って説明した問題の一部を編集しました... – noob

+0

@noob: 'S'の代わりに' data'を 'data = [Ball Trial A B C D];' – Amro