fill area between two curves

254 ビュー (過去 30 日間)
Amir Hosein Shokouhy
Amir Hosein Shokouhy 2022 年 3 月 16 日
コメント済み: Voss 2022 年 3 月 17 日
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

採用された回答

Voss
Voss 2022 年 3 月 16 日
編集済み: Voss 2022 年 3 月 16 日
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 件のコメント
Amir Hosein Shokouhy
Amir Hosein Shokouhy 2022 年 3 月 16 日
Thank you very much!
Voss
Voss 2022 年 3 月 17 日
You're welcome!

サインインしてコメントする。

その他の回答 (1 件)

Davide Masiello
Davide Masiello 2022 年 3 月 16 日
編集済み: Davide Masiello 2022 年 3 月 16 日
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');

カテゴリ

Help Center および File ExchangeGraphics Object Properties についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by