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

Löschen des i-ten Eintrags des Vektors x mit einer Funktion

 

Mysii
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2014, 20:03     Titel: Löschen des i-ten Eintrags des Vektors x mit einer Funktion
  Antworten mit Zitat      
Hallo,

versuche in letzter Zeit mich mit MATLAB anzufreunden und muss zugeben, dass ich ein Neuling bin. Deshalb benötige ich jede Hilfe, um mich in das Programm einzusteigern.

Mein Problem jetzt ist folgendes;

Ich versuche einen Eintrag des Vektors x mit einer Funktion zu löschen.

Ich definiere erst den Vektor x=[4 7 9 3 5]

Normal würde ich ja eingeben: x(2)=[]

So wäre die 7 weg wenn ich mich nicht täusche.

Nun das ganze als eine Funktion wiedergeben dürfte ja nicht schwer sein. Jedoch bekomme ich dauernd eine Fehlermeldung.

function z=Beispiel (x,i)
x(i)=[];
z=x
end

Das wäre doch die einfachste Variante wenn ich mich nicht täusche. Nun möchte ich ja den 2. Eintrag also die 7 löschen. Wie und wo muss ich die 2 (2. Eintrag) und die 7 eingeben?

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2014, 20:41     Titel: Re: Löschen des i-ten Eintrags des Vektors x mit einer Funk
  Antworten mit Zitat      
Mysii hat Folgendes geschrieben:

Nun das ganze als eine Funktion wiedergeben dürfte ja nicht schwer sein. Jedoch bekomme ich dauernd eine Fehlermeldung.

Was sagt die Meldung denn? Meistens gibt das, was dort steht einen Hinweis darauf, was nicht passt...


Mysii hat Folgendes geschrieben:

function z=Beispiel (x,i)
x(i)=[];
z=x
end

Ich halte es für ungeschickt, i und j in Matlab zu verwenden, da diese jeweils als die imaginäre Einheit (i*i = -1) interpretiert werden. Das kann zu wunderlichen Fehlern führen, wenn man nicht aufpasst.

Markus
Private Nachricht senden Benutzer-Profile anzeigen
 
Mysii
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2014, 20:49     Titel: Re: Löschen des i-ten Eintrags des Vektors x mit einer Funk
  Antworten mit Zitat      
Epfi hat Folgendes geschrieben:

Was sagt die Meldung denn? Meistens gibt das, was dort steht einen Hinweis darauf, was nicht passt...



Ich halte es für ungeschickt, i und j in Matlab zu verwenden, da diese jeweils als die imaginäre Einheit (i*i = -1) interpretiert werden. Das kann zu wunderlichen Fehlern führen, wenn man nicht aufpasst.

Markus


Also wie gesagt, bin ziemlich neu und das mit i und j wurde uns so beigebracht. Deshalb habe ich das einfach so übernommen.

Also ich weiß in dem Fall nicht, wo für das (x,i) steht

wenn ich jetzt die Funktion habe

Code:
function z=Beispiel (x,i)
x(i)=[];
z=x
 

In der Kommandozeile würde ich ja eingeben x(2)=[] (das klappt, will aber ja ne Funktion)

Deshalb habe ich das ganze mal so eingegeben:
Code:

function z=Beispiel (x,2)
x(2)=[];
z=x
end


Fehlermeldung:

Error: File: Beispiel.m Line:1 Column: 24
Unexpected MATLAB expression.

Das x muss doch für den Vektor x stehen und das i für den Eintrag. Was soll denn da falsch sein?

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Mysii
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2014, 23:02     Titel:
  Antworten mit Zitat      
Kann mir denn keiner helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.02.2014, 23:16     Titel:
  Antworten mit Zitat      
Hallo,

Definition der Funktion in einer eigenen Datei:
Code:
function z=Beispiel (x,i)
x(i)=[];
z=x;


Aufruf dann z.B. mit
Code:
x=[4 7 9 3 5];
x2 = Beispiel(x, 2)


Grüße,
Harald

P.S.: etwas mehr Geduld solltest du schon haben, bevor du dein Thema bumpst. Der Forum-Knigge schlägt 24 Stunden vor.
Private Nachricht senden Benutzer-Profile anzeigen
 
Mysii
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2014, 16:54     Titel:
  Antworten mit Zitat      
Hallo und vielen Dank für die Antwort.

Hat soweit geklappt.
Mein Problem jedoch ist, den Befehl über das Editor-Fenster auszuführen mir 'Run'.

Bevor ich Editor in MATLAB öffne, definiere ich den Vektor x in der Kommandozeile mit x=[4 7 9 3 5].
Folglich öffne ich Editor und definiere da die Funktion:

Code:
function z=Beispiel (x,i)
x(i)=[];
z=x;
end



Ich müsste also jetzt für i etwas einsetzen, in dem Fall die 2, um die 7 zu löschen. Wenn man dann auf Run klickt und diese Funktion abspeichert unter Beispiel.m, sollte doch die 7 verschwinden und das selbe passieren wie mit x2=Beispiel(x,2)

So müsste ich es doch im Editor-Fenster eingeben oder nicht?


Code:
function z=Beispiel (x,2)
x(2)=[];
z=x
end


Dann auf Run klicken. Ich kriege aber ne Fehlermeldung, siehe oben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.02.2014, 17:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
function z=Beispiel (x,2)

so eine Funktionsdefinition ist nicht sinnvoll.

In den runden Klammern stehen die Eingabevariablen, und 2 ist nunmal keine Variable.

Im Editor ist übrigens auch das Code Analyzer - Tool integriert, das dich über orange oder rote Markierungen auf Probleme hinweist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mysii
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2014, 17:56     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

so eine Funktionsdefinition ist nicht sinnvoll.

In den runden Klammern stehen die Eingabevariablen, und 2 ist nunmal keine Variable.

Im Editor ist übrigens auch das Code Analyzer - Tool integriert, das dich über orange oder rote Markierungen auf Probleme hinweist.

Grüße,
Harald


Ok, liegt wohl einfach daran, dass ich mich halt nicht gut auskenne.

Wenn ich dich richtig verstehe, ist es nicht möglich, eine Funktion über Run auszuführen, in dem man im Editor-Fenster alles einsetzt.

Ich muss also dort nur die Funktion mit Variablen definieren und dann im Command Windows aufrufen richtig?

Ich weiß echt nicht wo ich meine Fehler habe, besser gesagt erkenne ich sie nicht aufgrund meiner schwachen MATLAB-Kentnisse, aber ich kriege es immer noch nicht hin.

Ich öffne Editor und gebe folgendes ein:
Code:

function z=Beispiel(x,i)
x(i)=[];
z=x;
end


Versuche dann die Funktion aufzurufen:

Code:
x=[4 7 9 3 5]
x2=Beispiel(x,2)


Fehlermeldung: Error using Beispiel. Too many input arguments.

Ich habe doch alles so eingegeben, wie du es mir vorgeschlagen hast oder nicht?


Edit: Jetzt hat es geklappt. Frage mich, wieso ich davor diese Fehlermeldung bekommen habe?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.02.2014, 18:30     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Edit: Jetzt hat es geklappt. Frage mich, wieso ich davor diese Fehlermeldung bekommen habe?

Die Frage ist vielmehr, was du zwischenzeitlich gemacht hast, damit es nun klappt. Vielleicht hattest du die Datei mal abgeändert und zwischendrin nicht gespeichert? Wenn du sie danach dann doch mal gespeichert hast, wird natürlich auch die richtige Datei ausgeführt.

Zum Run-Button:
- in Versionen bis einschließlich R2012a ist das Verwenden des Run-Buttons für sich nicht sinnvoll, da so der Funktion nicht die benötigten Argumente zur Verfügung gestellt werden.
- ab R2012b kommt, wenn Eingabeargumente fehlen, ein Popup, das einen zur Eingabe eines "Testbefehls" auffordert, der beim Drücken des Run-Buttons ausgeführt werden soll. So werden der Funktion dann die benötigten Eingabeargumente übergeben.

Zitat:
Ok, liegt wohl einfach daran, dass ich mich halt nicht gut auskenne.

Dann kann ich nur eine systematische Einarbeitung anhand von Vorlesungen / Büchern / Schulungen empfehlen. Zum Füllen von Verständnislücken ist auch die Dokumentation sehr gut.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mysii
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2014, 21:40     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
Edit: Jetzt hat es geklappt. Frage mich, wieso ich davor diese Fehlermeldung bekommen habe?

Die Frage ist vielmehr, was du zwischenzeitlich gemacht hast, damit es nun klappt. Vielleicht hattest du die Datei mal abgeändert und zwischendrin nicht gespeichert? Wenn du sie danach dann doch mal gespeichert hast, wird natürlich auch die richtige Datei ausgeführt.

Zum Run-Button:
- in Versionen bis einschließlich R2012a ist das Verwenden des Run-Buttons für sich nicht sinnvoll, da so der Funktion nicht die benötigten Argumente zur Verfügung gestellt werden.
- ab R2012b kommt, wenn Eingabeargumente fehlen, ein Popup, das einen zur Eingabe eines "Testbefehls" auffordert, der beim Drücken des Run-Buttons ausgeführt werden soll. So werden der Funktion dann die benötigten Eingabeargumente übergeben.

Zitat:
Ok, liegt wohl einfach daran, dass ich mich halt nicht gut auskenne.

Dann kann ich nur eine systematische Einarbeitung anhand von Vorlesungen / Büchern / Schulungen empfehlen. Zum Füllen von Verständnislücken ist auch die Dokumentation sehr gut.

Grüße,
Harald


Ja es lag wohl wirklich daran, dass ich es nicht abgespeichert habe.

Und das mit dem Run-Button:

Ich habe auch an paar Übungskursen teilgenommen. Da hat man die Funktionen ständig mit dem Run-Button ausgeführt. Deshalb war das so interessant für mich.
Wenn ich da den Dreh rauskrieg fühl ich mich schon ne Ecke sicherer.

Nochmal vielen Dank für den tollen Support.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.02.2014, 01:51     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Da hat man die Funktionen ständig mit dem Run-Button ausgeführt.

Bist du sicher, dass das wirklich Funktionen waren und nicht 'nur' Skripte?

Grüße,
Harald
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.