grafik erstellen aus 2 vektore < Matlab < Mathe-Software < Mathe < Vorhilfe
|
hallo
ich habe eine frage wie ich am besten eine grafik stelle. gegeben sind zwei vektoren.
der erste vektor enthält berechnete werte für den y wert. (vektor geht von 0-30 in 0.1 schritten = meine x werte) dann habe ich noch einen zweiten gleichgroßen vektor und beinhaltet eine wertigkeit für jeden punkt aus dem ersten vektor. abhängig vom zweiten vektor soll die farbe jedes abschnittes (ein abschnitt ist z.b. 0.1 bis 0.2) geändert werden.
hat jemand eine idee wie ich das mache?
viele grüße
markus
|
|
|
|
Hi,
man könnte das so machen, geht aber vielleicht noch eleganter:
1: | clear all; clc; close all;
| 2: |
| 3: | t=0:0.1:30;
| 4: | y=sin(t);
| 5: | hold on;
| 6: | for i=1:length(t)-1
| 7: | %pfarbe = farbe(y(i));
| 8: | plot( t(1,i:i+1),y(1,i:i+1),farbe(y(i)));
| 9: | end; |
Function-File farbe.m:
1: | function [ output_args ] = farbe( x )
| 2: | %FARBE Summary of this function goes here
| 3: | % Detailed explanation goes here
| 4: | if (abs(x) >= 0 && abs(x) < 0.2)
| 5: | output_args='k';
| 6: | elseif (abs(x) >=0.2 && abs(x)<0.4)
| 7: | output_args='y';
| 8: | elseif (abs(x) >= 0.4 && abs(x) < 0.6)
| 9: | output_args='b';
| 10: | elseif (abs(x) >= 0.6 && abs(x) < 0.8)
| 11: | output_args='g';
| 12: | elseif (abs(x) >= 0.8)
| 13: | output_args='r';
| 14: | end; |
Dateianhänge: Anhang Nr. 1 (Typ: m) [nicht öffentlich] Anhang Nr. 2 (Typ: m) [nicht öffentlich]
|
|
|
|
|
Hallo
Danke für diene Hilfe. Sowas in dieser Richtung suche ich. Ich wollte aber einen Farbverlauf haben. Ansonsten ist das das, was ich eigentlich suche. Ich habe mal meine m file im anhang hinzugefügt
gruß markus
Dateianhänge: Anhang Nr. 1 (Typ: m) [nicht öffentlich]
|
|
|
|
|
Hi,
dann vielleicht mit patch() ?
1: |
| 2: | clear all; clc; close all;
| 3: |
| 4: | t=0:0.1:30;
| 5: | y=30*sin(t);
| 6: | patch([nan t nan],[nan y nan],[nan y nan], 'Edgecolor','flat')
|
mfg
nschlange
|
|
|
|
|
ja genau das meinte ich, aber die farbe soll in abhängigkeit von einem vektor F bestimmt werden.
hab mir das etwa so gedacht:
patch([nan t nan],[nan y nan],[nan F nan], 'Edgecolor','flat')
nur spuckt er das selbe raus wie ohne F
|
|
|
|
|
Was hälst Du dann von
patch([nan t nan],[nan A nan],[nan F nan], 'Edgecolor','interp')?
Das musst Du in Deinem File dann statt der Plot-Schleife aufrufen.
mfg
nschlange
|
|
|
|
|
perfekt. das ist es!:)
danke dir
|
|
|
|