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

Jede Spalte einer Matrix plotten

 

Sari
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2013, 10:07     Titel: Jede Spalte einer Matrix plotten
  Antworten mit Zitat      
Hallo ich bin ein ziemlicher Frischling was Matlab betrifft.
In meinem HiWi Job soll ich allerdings mit Matlab programmieren und komme nicht so wirklich weiter.
Ich habe eine Matrix mit 256 Zeilen und j (konkret sinds hier 42) Spalten. Die erste Spalte ist unbrauchbar also sollen nur j-1 Spalten verwendet werden.
Ich habe eine Exponentialfunktion die für jede Spalte durchgeführt werden soll und die auch für jede Spalte ausgeführt werden und geplottet werden soll - so dass ich am Ende j-1 Graphen erhalte. Außerdem möchte ich auch jeden Graphen abspeichern - natürlich unter verschiedenen Namen so dass ich auch am Ende weiß welcher Graph zu welcher Spalte gehört Wink
Mein Chef sagt mir was von der num2str Funktion - aber mir sagt das natürlich gar nichts- hab auch schon fleißig im Internet gesucht aber irgendwie noch nichts wirklich konkret brauchbares gefunden.
Ich bin dankbar für jede Hilfe!
Der Code den ich bis jetzt habe - der aber leider nicht so funktioniert wie gewollt sieht so aus:


for x_data = nmr(:,1);
for p=1Sadj-1)
s{p}= num2str(p);
end
y_data = nmr(:,p+1);
y_data(1)=[];
x_data(1)=[];
guesses = [0 ; 20 ; 0.1];
try
[beta, resi, J] = nlinfit (x_data, y_data, @(guesses,x_data)(guesses(1)+guesses(2)*exp(-1/guesses(3)*x_data)), guesses);
catch
beta = zeros(3,1);
end

T2f=1/beta(3);

monofit(:,p)=beta;
plot(x_data,y_data);
plot(x_data,beta(2)*exp(-beta(3)*x_data)+beta(1),'-r')
legend('Data T2','Fit')
str = {['T_2=' num2str(T2f)]};
text(2*T2f,beta(2)/2,str,'FontSize',15);
set(T2m,'Visible','off');
print (T2m, '-djpeg', ['C:\Users\Sari\Desktop\Arbeit - NMR\Auswertungen\Test\T2fitmono' num2str(p) '.jpg']);
end
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: 13.08.2013, 11:44     Titel:
  Antworten mit Zitat      
bitte benutze die code umgebung wenn code gepostet wird. weiß nicht warum das immer überlesen wird bei neulingen. der butten ist so groß Smile
da der code so nicht lauffähig ist ist die aussage
Zitat:
der aber leider nicht so funktioniert wie gewollt
recht nutzlos solange du nicht sagst was nicht so aussiht wie gewollt ^^
der befehl
Code:
und
Code:
wären vieleicht hilfreich.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sari
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2013, 12:02     Titel:
  Antworten mit Zitat      
Tut mir leid Wink dann weiß ich fürs nächste mal Bescheid.
Dass der Code nicht so funktioniert wie gewollt kann ich genauer beschreiben. Ich erhalte zwei Graphen scheinbar für p=1 und p=39 die allerdings beide Identisch aussehen.
was ist denn
Code:

und wofür soll ich das verwenden?
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: 13.08.2013, 12:07     Titel:
  Antworten mit Zitat      
was clf macht steht in der doc.
kannst alternativ auch
Code:
verwenden da du ja 2 graphen pro plot haben willst wie es aussiht.
Code:
for p=1:j-1)
s{p}= num2str(p);
end
y_data = nmr(:,p+1);
y_data(1)=[];
x_data(1)=[];
 

p wird nicht mehr verändert bei dir.

Code:
for x_data = nmr(:,1);
das funktioniert zwar in der matlab syntax aber ich bin mir nicht sicher ob es wirklich das ist was du meinst. (ich bin mir sogar ziemlich sicher das du das nicht meinst Smile )
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sari
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2013, 12:22     Titel:
  Antworten mit Zitat      
also nmr ist meine Matrix.
und ich will ja dass die Spalte immer gewechselt wird.
müsste ich dann nicht sowas wie :
Code:

for x_data = nmr(:,1);
for p=1:j-1;
s{p}= num2str(p);
end
y_data = nmr(:,s);
y_data(1)=[];
x_data(1)=[];


haben? welche Variable wird denn bei der Verwendung von
Code:
for p=1:j-1;
s{p}= num2str(p);
end

verändert?
Und wieso gehst du davon aus, dass ich zwei Graphen haben möchte?
(Ich muss ganz ehrlich gestehen - mein "Chef" hat selber absolut keine Ahnung von Matlab und erarbeitet sich das auch alles mehr oder weniger übers Internet. Er hat die Stelle bisher programmiert und ich nur den Rest des Programms (und der läuft einwandfrei Very Happy ) deswegen hab ich auch nicht so wirklich ahnung davon was die einzelnen Befehle in diesem Teil so machen)
Danke auf jeden Fall schon mal für die Hilfe
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: 13.08.2013, 12:33     Titel:
  Antworten mit Zitat      
Code:
for p=1:j-1;
s{p}= num2str(p);
end

p wird nur innerhalb der schleife verändert
darum bringt das nix.
Code:
for x_data = nmr(:,1);

das sorgt nur dafür das x_data jeden wert aus der ersten spalte von nmr annimmt aber halt nacheinander außerdem sagtst du die erste spalte ist müll. du hast also für x_data in deiner schleife immer nur eine zahl. das ist denke ich nicht das was du willst.
richtiger wäre so etwas :
Code:
for k=2:j
x_data=nmr(:,k)
end
 

da werden dann die spalten gewächselt. so wie du es quasi bei ydata versucht hast. wobei ich mir nicht sicher bin was xdata bzw ydata dann ist bzw wo das aus der nmr kommt.
Zitat:
Und wieso gehst du davon aus, dass ich zwei Graphen haben möchte?
weil du den plot befehl 2 mal aufrufst.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.