fill area between two curves
138 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Amir Hosein Shokouhy
am 16 Mär. 2022
Kommentiert: Voss
am 17 Mär. 2022
Hello,
I have two PSD graphs and I want to fill the area between them.

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');

Does anyone know how I can fix it?
Thanks,
Amir
0 Kommentare
Akzeptierte Antwort
Voss
am 16 Mär. 2022
Bearbeitet: Voss
am 16 Mär. 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 Kommentare
Weitere Antworten (1)
Davide Masiello
am 16 Mär. 2022
Bearbeitet: Davide Masiello
am 16 Mär. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Graphics Object Properties finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


