узнать максимальную строку из каждой 100 итерации в Matlab - PullRequest
2 голосов
/ 13 июля 2011

у меня есть файл мата:

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), 2-й столбец - итерация 100, затем 3-й, 4-й, 5-й и 6-й - результат для 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 ... могу я знать, как рисовать?

, а также выводит строку максимального значения 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 Ответ

2 голосов
/ 13 июля 2011

Это работа для 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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...