フィルターのクリア

Füllen der Fläche zwischen zwei Vektoren mit NaN-Werten am Ende mit fill oder area ?

11 ビュー (過去 30 日間)
Ich versuche mit der Funktion fill die Fläche zwischen zwei Vektoren (upper und lower) zu füllen. Allerding müssen diese Vektoren eine bestimmte länge haben, da die Werte zum Schluss auf 100% normalisiert werden sollen.
Deshablb habe ich diese mit NaN Werten aufgefüllt habe.
Allerdings funktioniert damit die fill-Funktion nicht mehr:
Ich habe bereits versucht mit Hilfe der area-Funktion dieses Problem zu umgehen, gibt es eine möglichkeit die Fläche zwischen der Baseline und dem Wert auszublenden. Siehe nächstes Bild in blau:
Ich habe folgende Befehle genutzt:
fi = fill(x1,in_between,'b', 'FaceAlpha', 0.3);
ar = area(x1,in_between, 'FaceColor', 'blue', 'FaceAlpha', 0.3);
Ich bin dankbar für jeden Tipp oder jeden Hinweis.
  2 件のコメント
Elmar Tarajan
Elmar Tarajan 2023 年 6 月 2 日
Hier eine mögliche Lösung.
Niklas Burczyk
Niklas Burczyk 2023 年 6 月 2 日
Ich habe es bereits mit patch probiert, jedoch führt dies zu dem gleichen Fehler, wie bei der fill-Funktion. Ich denke Aufgrund der NaN-Werte.

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

採用された回答

Harald
Harald 2023 年 6 月 2 日
編集済み: Harald 2023 年 6 月 2 日
Hallo Niklas,
mein Vorschlag wäre, eine Matrix aus lower und upper zu bilden und diese an area zu übergeben, und die Fläche zwischen lower und der x-Achse weiß zu machen.
ar = area(x, [lower; upper - lower]');
ar(1).FaceColor = "white";
ar(2).FaceColor = "blue";
Viele Grüße,
Harald
  3 件のコメント
Harald
Harald 2023 年 6 月 2 日
編集済み: Harald 2023 年 6 月 2 日
Hallo Niklas,
das sieht interessant aus.;)
Kannst du bitte den momentan verwendeten Code und die Daten posten? Für mich sieht das hier nach mindestens drei Kurven aus.
Mir ist im übrigen ein Fehler bewusst geworden: statt upper muss man upper - lower verwenden. Ich bessere das oben aus. Vielleicht ist das ja auch schon die Erklärung.
Viele Grüße,
Harald
Niklas Burczyk
Niklas Burczyk 2023 年 6 月 2 日
編集済み: Niklas Burczyk 2023 年 6 月 2 日
Hallo Harald,
klar, hier ist der verwendete Code:
ar = area(x, [upper; lower]');
hold on;
plot(x, upper);
plot(x, lower);
ar(1).FaceColor = 'white'
Die Daten sind in der angehängten .mat-Datei.
Ich habe es ausprobiert mit upper-lower, es klappt
Dementsprechend funktioniert:
ar = area(x, [upper; upper-lower]');
hold on;
plot(x, upper);
hold on;
plot(x, lower);
ar(1).FaceColor = 'white';
Dementsprechend, vielen Dank für die Hilfe.
Viele Grüße,
Niklas Burczyk

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

その他の回答 (0 件)

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!