Find max and min every n elements in a matrix, then plot with error bar together with mean value
9 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ángel Brito Gadeschi
il 13 Gen 2022
Modificato: Ángel Brito Gadeschi
il 14 Gen 2022
Hello i am reading a matrix with 2 columns. The first columns has a radius and the second column stores a value. there are n * m rows, where n is the number of groups and m is the number of elements in each group.
Example Matrix
A(:,1) = 0.01:0.01:1.1 % radius
A(:,2) = rand(110,1) % value
Now i want to find the average every m elements, in this case lets say 10 groups of 11 elements
B(:,1) = accumarray(ceil((1:numel(A(:,1)))/11)',A(:,1),[],@mean)% average of radii
B(:,2) = accumarray(ceil((1:numel(A(:,2)))/11)',A(:,2),[],@mean)% average of value
Now my 1. question: How can i efficiently find the max and min of each group?
Also later i plot array B like so:
plot(fig,B(:,1),B(:,2),'k-o')
and my 2. question: How can i add the min and max values as an error bar to the plot above? i.e.
|----o----|
Thanks a lot
0 Commenti
Risposta accettata
Adam Danz
il 13 Gen 2022
Modificato: Adam Danz
il 13 Gen 2022
How can i efficiently find the max and min of each group?
Hint: use the same accumarray function except replace mean with max or min.
How can i add the min and max values as an error bar
Use the errorbar function. errorbar(x,y,neg,pos) where neg and pos are the distance of the min,max from the mean. Give it a shot and if you get stuck, show us what you've got and we can help more.
3 Commenti
Adam Danz
il 13 Gen 2022
Modificato: Adam Danz
il 13 Gen 2022
The errorbars shouldn't look like a filled surface. Could you show me an example or provide data and code that reproduces what you're seeing?
To answer your question, set linestyle to none to remove the line that connects multiple error bars, if that's what you want to do.
The undocumented bar property has a visible property that can be set to off which will remove the bars that connects the caps. But that makes the caps difficult to see so you can extend their length by increasing capsize and increase their line width by increasing linewidth.
Demo
eb = errorbar(1:3, [0.2, 0.5, 0.3], ...
'LineStyle', 'none', ...
'CapSize', 15, ...
'LineWidth', 2);
eb.Bar.Visible = 'off';
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Line Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!