fill area between two curves
260 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello,
I have two PSD graphs and I want to fill the area between them.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/929474/image.png)
I used this code but it didn't work properly:
figure(3)
x2 = [f2(321:1921,:), fliplr(f2(321:1921,:))];
inBetween = [yconf(321:1921,1), fliplr(yconf(321:1921,2))];
fill(x2, inBetween, 'g');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/929479/image.png)
Does anyone know how I can fix it?
Thanks,
Amir
0 Commenti
Risposta accettata
Voss
il 16 Mar 2022
Modificato: Voss
il 16 Mar 2022
You should use flipud() or flip(_,1) or just use indexing (and do vertical concatenation with ; rather than horizontal concatenation with ,):
% some data similar to yours for the purpose of filling between:
f2 = linspace(0,30,64*30+1).';
yconf = -40*sin(f2)-40+[0 -20];
plot(f2,yconf);
xlim([5 30]);
% fill using flip():
figure()
x2 = [f2(321:1921,:); flip(f2(321:1921,:),1)];
inBetween = [yconf(321:1921,1); flip(yconf(321:1921,2),1)];
fill(x2, inBetween, 'g');
xlim([5 30]);
% fill using indexing:
figure()
x2 = f2([321:1921 1921:-1:321],:);
inBetween = [yconf(321:1921,1); yconf(1921:-1:321,2)];
fill(x2, inBetween, 'g');
xlim([5 30]);
4 Commenti
Più risposte (1)
Davide Masiello
il 16 Mar 2022
Modificato: Davide Masiello
il 16 Mar 2022
I think the problem might be that your y-values are column vectors, and therefore you create a matrix when you concatenate them using the comma.
Maybe this will work
figure(3)
x2 = [f2(321:1921,:), fliplr(f2(321:1921,:))];
inBetween = [yconf(321:1921,1)', fliplr(yconf(321:1921,2))'];
fill(x2, inBetween, 'g');
0 Commenti
Vedere anche
Categorie
Scopri di più su Graphics Object Properties 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!