WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Spline anhand Messwerten erstellen und plotten

 

Sebastianvsmatlab
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2015, 08:34     Titel: Spline anhand Messwerten erstellen und plotten
  Antworten mit Zitat      
Hallo Zusammen,

ich stehe vor dem Problem, dass ich eine anhand von Messwerten erstellte Kurve mit einer Funktion beschreiben möchte. Über ein Polynom (auch 10.Grades) ist dies leider zu ungenau. Über das Basic fitting Tool habe ich gesehen, dass aber eine Spline sehr gut passen würde. Gibt es hier auch die Möglichkeit sich wie beim Polynom die Funktion ausgeben zu lassen und im anschluss ähnlich Polyval dann entsprechend der Werte plotten zu lassen? Ich konnte leider bisher nichts eindeutiges hier im Forum finden.

Vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 05.05.2015, 09:11     Titel:
  Antworten mit Zitat      
was klappt denn nicht?
was hast du versucht?
sihe dazu am besten den thread aus meiner signatur.
Code:

Zitat:
pp = spline(x,Y) returns the piecewise polynomial form of the cubic spline interpolant for later use with ppval and the spline utility unmkpp.

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastianvsmatlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2015, 12:46     Titel:
  Antworten mit Zitat      
Hallo Winkow,

bisher habe ich die Näherungsfunktion über polyfit erstellt, dies war aber zu ungenau. Mir geht es nun darum ob es mit spline möglich ist für vorhandenen Messwerte (x,y) eine Näherungsfunktion y=..... zu erhalten mit welcher im weiteren Verlauf auch gerechnet werden kann.

Vielen Dank im Voraus Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.05.2015, 17:06     Titel:
  Antworten mit Zitat      
Hallo Sebastianvsmatlab,

Und hast Du es nun mal mit dem empfohlenen SPLINE versucht?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastianvsmatlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2015, 17:42     Titel:
  Antworten mit Zitat      
Ja das habe ich, funktioniert auch soweit, nur habe ich das Problem, dass die Koeffizienten usw, nur im Workspace zu finden sind und nich im Command Window ausgegeben werden. Wo könnte da der Fehler liegen?

versucht habe ich es über:

Code:
[breaks,coefs,l,k,d]=unmkpp(pp);
 


Gibt es die Möglichkeit die Koeffizienten usw. für jeden Spline gesondert zu bezeichnen? Denn ich möchte mehrere Splines zu verschiedenen Wertepaaren erstellen.

Im weiteren Verlauf möchte ich mit den Splines "rechnen".
In Kurzfassung möchte ich das Spline eines Wertepaares erstellen, die einzelnen Punkte vom Spline von denen eines Splines eines anderen Wertepaares subtrahieren und letztendlich die Differenz zum einen grafisch darstellen und zum anderen wieder einen Spline davon bilden.

Ist die so möglich? Ich bin leider noch recht frisch was Matlab angeht.

Vielen Dank:)
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 05.05.2015, 17:52     Titel:
  Antworten mit Zitat      
wenn du dir die daten angucken willst kannst du im workspace doppelklick drauf machen. die ausgabe im command ist nur zur information und nicht um damit zu arbeiten. sie wird normalerweise mit ; unterdrückt. was auch sinnvoll ist.
Zitat:
Gibt es die Möglichkeit die Koeffizienten usw. für jeden Spline gesondert zu bezeichnen? Denn ich möchte mehrere Splines zu verschiedenen Wertepaaren erstellen.
das verstehe ich nicht.
Code:
pp = spline(x,Y)
pp2 = spline(x,Y)
wären unterschiedliche namen. du könntest sie auch in einer struktur ablegen. das wäre einfacher um es automatisch zu bearbeiten.
vieleicht ist es hilfreicher wenn du ein minimalbeispiel zur verfügung stellst. hier nochmal der hinweis auf den thread aus meiner signatur.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastianvsmatlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2015, 18:05     Titel:
  Antworten mit Zitat      
Hier der Versuch eines Minimalbeispiels:

Daten aus Messreihe 1:

X=[1,2,3]
Y=[4,5,6]

Daten aus Messreihe 2:

X2=[7,8,9]
Y2=[10,11,12]

[u]Näherungsfunktionen:[/u]

pp=spline %für Messreihe 1

pp2=spline% für Messreihe 2

Offset bestimmen


Hierzu wäre meine Idee die Funktionswerte von pp und pp2 jeweils in eine Matrix schreiben zu lassen um anschließend die Differenz zu bilden. Dieses "Offset" möchte ich dann anschließend ploten und eine Näherungsfunktion über Spline davon bilden.


Meine Frage ist ob das grundsätzlich so oder so ähnlich möglich ist? Für andere Vorschläge bin ich natürlich offen:)
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 05.05.2015, 18:31     Titel:
  Antworten mit Zitat      
dein minimalbeispiel ist sehr minimal Smile deine daten sind leider ungewollt linar abhängig was bei beiden zum gleichen spline führt Smile
Code:
X=[1,2,3]
Y=[4,5,6]
X2=[7,8,9]
Y2=[10,15,12]
pp=spline(X,Y) %für Messreihe 1
pp2=spline(X2,Y2)% für Messreihe 2
pp3=polyfit(X2,Y2,1)% polyfit erster ordnung
plot(X,Y)
hold all
plot(X2,Y2)
plot(X,ppval(pp2,X),'+r')% plot mit spline interpolation
plot(X,polyval(pp3,X),'ob') %plot mit linearem fit

hab das mal ein wenig angepasst um das problem zu verdeutlichen.
polynome neigen dazu zu überschwingen. grade wenn du jetzt versuchst werte weit außerhhalb des gewitteten bereiches zu erstellen kann es da zu stark abweichenden ergebnissen kommen; bei extrapolation muss man da also bei polynomen sehr vorsichtig sein. einfacher wäre es wenn du eine vorstellung vom funktionalem zusammenhang der daten hast. dann kannst du eine spezielle funktion fitten.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastianvsmatlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 10:11     Titel:
  Antworten mit Zitat      
Hallo Winkow,

anbei habe ich nun das konrekte Beispiel, vielleicht wird es dann etwas klarer was ich meine.

Code:
%Einlesen der .csv-Datei

%TE

fid_TE=fopen('Datei_TE')
M=textscan(fid_TE,'%s','headerlines',2,'delimiter',';');
M=reshape(M{1},76,[]);
fclose(fid_TE)
M(5:end,:)=strrep(M(5:end,:),',','.');
numeric_TE_V1=cellfun(@str2num,M(5:end,:));

%TK

fid_TK=fopen('Datei_TK')
M2=textscan(fid_TK,'%s','headerlines',4,'delimiter',';');
M2=reshape(M2{1},19,[]);
fclose(fid_TK)
M2(5:end,:)=strrep(M2(5:end,:),',','.');
numeric_TK=cellfun(@str2num,M2(5:end,:));


%Deklarieren der Datei

%TE
y_TE_1=(numeric_TE_V1)'
y_TE=y_TE_1(:,:)         %Anpassen der Dimensionen

%TK
y_TK_K=(numeric_TK)'
y_TK_C=y_TK_K(:,:)-273,15                   %Umrechnung in °C

% Erstellung des Zeitvektors

%TE
y_size_TE = size (y_TE,1)
time=0:0.5:((y_size_TE-1)/2)               %Vektor ungerade
%time = 0:0.5:(y_size_TE/2)                  %Vektor gerade

%TK
y_size_TK = size (y_TK_C,1)
time_TK=0:0.5:((y_size_TK-1)/2)   %Vektor ungerade
% time_TK = 0:0.5:(y_size_TK/2)           %Vektor gerade


%Plotten

hold on

%TE
% plot(time, y_TE(:,1),'k')                %Sollwert Temperatur
% plot(time, y_TE(:,2))                    %Sollwert Druck

% plot(time, y_TE(:,4),'g')                %T1
% plot(time, y_TE(:,5),'c')                %T2
% plot(time, y_TE(:,6),'m')                %T3
% plot(time, y_TE(:,7),'k')                %T4
% plot(time, y_TE(:,14))                   %T11
plot(time, y_TE(:,15),'k')               %T12
% plot(time, y_TE(:,16))                   %T13

%TK
% plot(time_TK, y_TK_C(:,1))      %POIO = T4
% plot(time_TK, y_TK_C(:,3))      %POI1 = T13
% plot(time_TK, y_TK_C(:,5))      %POI2 = T11
% plot(time_TK, y_TK_C(:,7))      %POI3 = T1
plot(time_TK, y_TK_C(:,9),'b')  %POI4 = T12
% plot(time_TK, y_TK_C(:,11))     %AOI0


%Näherungsfunktion

%Polynom

%TE
polytime=(time)'
p1_TE=polyfit(polytime(:,1),y_TE(:,15),10)
p1plot_TE=polyval(p1_TE,time)
plot(time, p1plot_TE,'k-.')      

%TK
polytime_TK=(time_TK)'
p1_TK=polyfit(polytime_TK(:,1),y_TK_C(:,9),10)
p1plot_TK=polyval(p1_TK,time_TK)
plot(time_TK, p1plot_TK,'b-.')      


%Spline

%TE
pp_TE=spline(time, y_TE(:,15));
spline1_TE=ppval(pp_TE,time);
plot(time,spline1_TE,'k:');
[breaks,coefs,l,k,d]=unmkpp(pp_TE);


%TK
pp_TK=spline(time_TK, y_TK_C(:,9));
spline1_TK=ppval(pp_TK,time_TK);
plot(time_TK,spline1_TK,'b:');
[breaks,coefs,l,k,d]=unmkpp(pp_TK);

hold off


%Offset

delta_y=spline1_TK-spline1_TE


Mir geht es darum das Offset spline1_TK-spline1_TE zu erzeugen um dieses wieder als Spline plotten zu können. Wenn ich dies aber nun mit meinem Code Versuche besteht das Problem, dass ich Aufgrund der unterschiedlichen Matrixdimensionen von spline1_TE und spline1_TK (was auf die Matrixdimensionen von Y_TE und y_TK zurückzuführen ist) folgende Fehlermeldung erhalte:

Code:
??? Error using ==> minus
Matrix dimensions must
agree.

Error in ==> Plot_TE_TK at
104
delta_y=spline1_TK-spline1_TE
>>



Ich habe nun versucht über den folgenden Code die Dimensionen anzupassen, leider gelingt mir das nicht. Ich hätte gerne von Zeile 1 bis Zeile 875 alles in y_TE abgespeichert.
Code:
y_TE=y_TE_1(875,:)



Mit meinem Code bekomme ich allerdings nur Zeile 875 ausgegeben. Wahrscheinlich wieder ein dummer Fehler....aber ich bin in Matlab eben noch blutiger Anfänger.

Anbei die Dateien sowie der Code als m file.

Vielen Dank im Voraus

Forum.zip
 Beschreibung:

Download
 Dateiname:  Forum.zip
 Dateigröße:  59.44 KB
 Heruntergeladen:  429 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.05.2015, 11:31     Titel:
  Antworten mit Zitat      
ok also.... in deiner zip datei ist ein ander code als der den du hier gepostet hast. das ist verwirrend. aber egal
1.:
Code:
y_TE=y_TE_1(:,:)  
was soll das bringen? das macht nix
2.
Code:
y_TK_C=y_TK_K(:,:)-273,15  

da ist komma und punkt vertauscht.
dann verstehe ich noch nicht ganz wozu unbedingt der zeit vektor gebraucht wird wenn ehr eh äquidistant ist und bei beiden gleich kannst du auch einfach 1:size nehmen denke ich.
und ich verstehe dann nicht warum du überhaubt das ganze mit splines fitten willst. wenn du davon ausgehst das die messungen von tk und te zur selben zeit sind... was ja durch deinen zeit vektor gegeben ist kannst du die auch einfach gleich voneinandern abzihen. der spline interpolant macht das ganze ehr schlechter. wenn du unterschiedliche zeitgrundlagen hättest müsstest du interpolieren.. aber selbst dann wäre bei den gegebenen daten lineare interpolation viel besser.
Code:
polytime_TK(:,1),
das het eh nur eine dimmension. die angabe von beiden ist damit hinfällig.
Zitat:
ch habe nun versucht über den folgenden Code die Dimensionen anzupassen, leider gelingt mir das nicht. Ich hätte gerne von Zeile 1 bis Zeile 875 alles in y_TE abgespeichert.

Zitat:
Code:
y_TE=y_TE_1(875,:)

das sind alle spalten aus zeile 875. am besten nochmal das grundlagen kapitel von matlab angucken. da steht wie man matritzen adressiert.

da du oben mit spalte 9 bzw 15 arbeitest würde ich das hier auche machen
also
Code:
y_TE=y_TE_1(1:875,15)

grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastianvsmatlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 11:50     Titel:
  Antworten mit Zitat      
Hallo Winkow,

zu 1) Hier wollte ich die Dimensionen angleichen, so wie der Code dasteht bringt er nichts, das ist klar. Ich habe es quasi "leer" gelassen weil mir die Idee fehlt wie ich 875 Zeilen über alle Spalten einlese.

2) Ich habe aus einer Messung die Temperaturwerte in Kelvin und aus der anderen in °C, damit habe ich die Umrechnung realisiert, bei mir geht das auch so..funktionierte das bei dir etwa nicht?

Ich verstehe nicht ganz wo Komma und Punkt vertauscht ist?

Mit den Splines hast du recht, da lag bei mir ein Denkfehler vor, Vielen Dank!

Für die lineare interpolation müsste ich aber die Messwerte zeitlich splitten oder sehe ich das falsch?


Abschließend ein riesen Dankeschön an dich für deine Mühe:)
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.05.2015, 11:58     Titel:
  Antworten mit Zitat      
Zitat:
zu 1) Hier wollte ich die Dimensionen angleichen, so wie der Code dasteht bringt er nichts, das ist klar. Ich habe es quasi "leer" gelassen weil mir die Idee fehlt wie ich 875 Zeilen über alle Spalten einlese.

Code:
a(1:875,:)

das sind absolute grundlagen Smile ich kann dir nur ans herz legen das getting startet von matlab durchzuarbeiten. das kostet nicht viel zeit sondern erspaart dir ne menge.
Zitat:
2) Ich habe aus einer Messung die Temperaturwerte in Kelvin und aus der anderen in °C, damit habe ich die Umrechnung realisiert, bei mir geht das auch so..funktionierte das bei dir etwa nicht?

Ich verstehe nicht ganz wo Komma und Punkt vertauscht ist?

falls du nicht von allen werten 273 abzihen willst und dann noch irgendwo sinnlos ne 15 rumstehen haben willst muss da ein punkt hin.
Code:
y_TK_C=y_TK_K(:,:)-273.15  
das dezimaltrennzeichen in matlab ist ein punkt und kein komma.
Zitat:
Für die lineare interpolation müsste ich aber die Messwerte zeitlich splitten oder sehe ich das falsch?

wie gesagt ich verstehe nicht warum du überhaubt da irgendwas mit der zeit machst wenn du eh bei beiden die selbe zeitachse verwendest.
du kannst einfach die werte voneinander abziehen. ich weis nicht ob du da den sinn von interpolation mit iregndwas vertauscht. du brauchst die interpolation wenn du zwei unterschiedliche zeitgrundlagen hättest.
sonst rechnest du da ja im kreis.
dann hast du x1 an t1 und versuchst das auf t1 zu interpolieren... den hast du doch schon...
Code:
y_TE(:,15)-y_TK_C(:,9)

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebastianvsmatlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 15:45     Titel:
  Antworten mit Zitat      
Leider steht ich schon wieder vor einem Problem, trotz viel rumprobieren und Suchen komme ich nicht weiter.
Mein Code sieht nun wie folgt aus:
Code:

%Einlesen der .csv-Datei

%TE

fid_TE=fopen('Datei_TE')
M=textscan(fid_TE,'%s','headerlines',2,'delimiter',';');
M=reshape(M{1},76,[]);
fclose(fid_TE)
M(5:end,:)=strrep(M(5:end,:),',','.');
numeric_TE_V1=cellfun(@str2num,M(5:end,:));

%TK

fid_TK=fopen('Datei_TK')
M2=textscan(fid_TK,'%s','headerlines',4,'delimiter',';');
M2=reshape(M2{1},19,[]);
fclose(fid_TK)
M2(5:end,:)=strrep(M2(5:end,:),',','.');
numeric_TK=cellfun(@str2num,M2(5:end,:));


%Deklarieren der Datei

%TE
y_TE=(numeric_TE_V1)'
                       
%TK
y_TK_K=(numeric_TK)'
y_TK=y_TK_K(:,:)-273.15                   %Umrechnung in °C

% Erstellung des Zeitvektors

%TE
y_size_TE = size (y_TE,1)
time=0:0.5:((y_size_TE-1)/2)               %Vektor ungerade
%time = 0:0.5:(y_size_TE/2)                  %Vektor gerade

%TK
% y_size_TK = size (y_TK,1)
% time_TK=0:0.5Sad(y_size_TK-1)/2)   %Vektor ungerade
% time_TK = 0:0.5:(y_size_TK/2)           %Vektor gerade


%Plotten

%TE
hold on
title('Versuch1')
xlabel('Zeit [min]');
ylabel('Temperatur [°C]');

plot(time, y_TE(:,1),'k-')                %Sollwert Temperatur
% plot(time, y_TE(:,2))                    %Sollwert Druck
% plot(time, y_TE(:,4),'g')                %T1
% plot(time, y_TE(:,5),'c')                %T2
% plot(time, y_TE(:,6),'m')                %T3
% plot(time, y_TE(:,7),'k')                %T4
% plot(time, y_TE(:,14))                   %T11
plot(time, y_TE(:,15),'b')               %T12
% plot(time, y_TE(:,16))                   %T13

%TK
% plot(time_TK, y_TK(:,1))      %POIO = T4
% plot(time_TK, y_TK(:,3))      %POI1 = T13
% plot(time_TK, y_TK(:,5))      %POI2 = T11
% plot(time_TK, y_TK(:,7))      %POI3 = T1
plot(time(1,1:875), y_TK(:,9),'r')  %POI4 = T12
% plot(time_TK, y_TK(:,11))     %AOI0







%Offset/Werte

delta_y=y_TK(:,9)-y_TE(1:875,15)

%Offset/plot

plot(time(1,1:875), delta_y,'g');



%Offset/Näherungsfunktion

%spline
pp_sp=spline(time(1,1:875),delta_y(:,1));
spline_Offset=ppval(pp_sp,time(1,1:875));
plot(time(1,1:875),spline_Offset,'y');
hold off



Es erscheint nun diese Fehlermeldung:

Code:
??? Subscript indices must
either be real positive
integers or logicals.

Error in ==> Plot_TE_TK at
118
pp_sp=spline(time(1,1:875),delta_y(:,1));


Ich bin absolut überfragt was hier nun falsch sein könnte, da vorab mit den anderen splines alles funktionierte.


Vielen DAnk:)

Anbei nochmal die Dateien

Datei_TE_TK.zip
 Beschreibung:

Download
 Dateiname:  Datei_TE_TK.zip
 Dateigröße:  56.22 KB
 Heruntergeladen:  433 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.05.2015, 15:57     Titel:
  Antworten mit Zitat      
hmm ok ich kann mich nur immer und immer wiederholen... bitte guck dir das grundlagen kapitel von matlab an. grade was das adressieren von matrizen angeht. du vertauscht immer dimensionen. deine fehler kann man sehr leicht mit dem debugger nachverfolgen.
delta_y hat die diemenson 875x1 und nicht andersrum.
und ich versteh immernoch nicht warum du versuchst das mit nem spline zu interpolieren.
Code:
delta_y=y_TK(:,9)-y_TE(1:875,15)

offset wird berechnet
Code:
pp_sp=spline(time(1,1:875),delta_y(1,:));

es wird versucht eine stückweise definierten spline zu basteln obwohl das überhaubt nicht wie ein spline aussiht....
Code:
spline_Offset=ppval(pp_sp,time(1,1:875));

jetzt berechnest du einen neuen offset auf der selben datenbasis die du schon hast.... du ersetzt deine berechneten werde duch komsiche werte die nicht passen.....
wo ist da der sinn?
wozu machst du das?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.05.2015, 16:35     Titel:
  Antworten mit Zitat      
Hallo Sebastianvsmatlab,

Wenn Dir so ein Problem begegnet, untersuche die Symbole in der Zeile, die den Fehler erzeugt:
Code:
??? Subscript indices must
either be real positive
integers or logicals.

Error in ==> Plot_TE_TK at
118
pp_sp=spline(time(1,1:875),delta_y(:,1));

Du hast zunächst auf der untersten Hierarchie die Symbole 1, 1:875, : und 1. Mit denen muss alles in Ordnung sein. Eine Stufe höher ist time und delta_y. Die können so einen Fehler auch nicht erzeugen, aber schaue Dir sicherheitshalber die Werte im Debugger an:
Code:

Dann starte den Code. Wenn der Fehler auftritt, gib ins CommandWindow ein:
Code:
time
delta_y
time(1, 1:875)
delta_y(:,1)

Und läuft das noch? Woran kann es dann liegen? Das letzte Symbol ist "spline". Nun, das ist ja eine Funktion - es sei denn, Du hast vorher den Namen für eine Variable verwendet. Aha!
Code:

Wenn spline als Variable verwendet wird, sind die Werte von time(1, 1:875) und/oder delta_y(:,1) nicht ganzzahlig positiv, und damit keine regulären Indices.

Lösung: clear spline.
Und dann keine Namen von Matlab-Funktionen mehr als Variablen verwenden. Der editor sollte bei sowas eine Warnung ausgeben!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.