找出matlab中每100次迭代的最大行数

时间:2011-07-13 07:42:50

标签: matlab

我创建了一个mat文件:

S = load abc.mat

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

加载这个mat文件后,我使用这个mat文件运行一些代码,结果显示如下命令窗口

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(30:5:100),第二列是100次迭代,然后第3,第4,第5和第6是A,B,C,D的结果< / p>

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

我想绘制一个线图,其中包括每个索引(球)中的最大c ..其中x轴是t(球30到100),y轴是变量c ...我可能知道如何画画?

并在.txt文件中显示每个索引(球)上的最大c行...

结果:def.txt

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?感谢...

1 个答案:

答案 0 :(得分: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])