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

Fehlermeldung matlab

 

Lab21
Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.01.2014, 14:39     Titel: Fehlermeldung matlab
  Antworten mit Zitat      
Hallo ich hab gerade probleme eine Fehlermeldung bei matlab zu beseitigen:

m file:

Code:


clear all; close all; clc;

%b)

[ x,x1,x2,t,err ] = overlay_sin( 100,1,0, 300,1/3,0,3 );


%f)

plot( t, x , t,x1 ,t,x2 )
xlabel( '{\itt}/s')


%g)

figure
subplot( 2,2,1)

f1 = 50;
A1 =1;
phi1 = 0;
A2= 0.9*A1;

phi2 = 0;
P = 20;

%h)

for f2 = 10*f1+5:f1
   
 

    [x,x1,x2,t,err]=overlay_sin(f1,A1,phi1,f2,A2,phi2,P);
    figure
    plot( t,x)
    pause (0,4)
   
   
end
 




Funktion sieht so aus :

Code:

function [ x,x1,x2,t,err ] = overlay_sin( f1,A1,phi1, f2,A2,phi2,P )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here

x = 0;
x1 = 0;
x2=  0;
t = 0;
err =0;

dt = 0.125e-3;


end
%c)


fmin =min(f1,f2);

%d)

t = (0:dt:P/fmin - dt);

%e)

x1t = A1*sin(2*pi*f1*t+phi1);
x2t = A2*sin(2*pi*f2*t+phi2);
xt = x1t +x2t;

%i)

if( err ==1)
    return;
   
   
end

 



Fehlermeldung:

Error in (line 7)
[ x,x1,x2,t,err ] = overlay_sin( 100,1,0, 300,1/3,0,3 )


Error: File: overlay_sin.m Line: 18 Column: 1
This statement is not inside any function.
(It follows the END that terminates the definition of the function "overlay_sin".)




Könnt ihr mir bitte helfen ?

Ich komme einfach nicht auf den Fehler .


Und eine kurze frage zu der Aufgabe i) da war ich mir nicht sicher:

Prüfen Sie in der Funktion overlay_sin das Maximum der beiden übergebenen Frequenzwerte gemäß der oben angegebenen Bedingung für den Fehlerwert err. Falls err auf 1 gesetzt werden muss (maximale Frequenz ist zu groß), soll die Funktion zurückkehren (return) und nur die Initialwerte von t, x, x1 und x2 zurückgeben. Fügen Sie die Prüfung an einer geeigneten Stelle in die Funktion ein.


Wie mache ich das hier: in der if Bedingung ?

und nur die Initialwerte von t, x, x1 und x2 zurückgeben

Für hilfe wäre ich dankbar.
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: 01.01.2014, 17:54     Titel: Re: Fehlermeldung matlab
  Antworten mit Zitat      
Hallo Lab21,

Wie immer rate ich mal wieder von der Benutzung von "clear all" ausdrücklich ab: Es löscht unter anderem die Debugger-Breakpoints, und alles, was das Debuggen erschwert, ist ein Feind der Programmierers! Wenn Dir das von irgendjemandem empfohlen wurde, was leider in Anfänger-Kursen inflationäre vorzukommen scheint, teile Deinem Ratgeber bitte mit, dass das deutliche Nachteile hat. Danke.


Zitat:
Error: File: overlay_sin.m Line: 18 Column: 1
This statement is not inside any function.
(It follows the END that terminates the definition of the function "overlay_sin".)

Das bedeutet wahrscheinlich, dass Du den gezeigten Code in ein Script-File geschrieben hast, also in ein M-File, welches nicht mit "function" beginnt. In Script-Files sind Funktions-Definitionen aber nicht erlaubt. Entweder schreibst Du die Funktions-Definition dann in ein eigentständiges File, oder Du machst aus dem Gesamten File eine Funktion, indem Du mit einem "function"-Statement beginnst. Dann würde übrigens auch "clear all" überhaupt keinen Sinn mehr haben, da der Workspace einer Funktion zu Beginn sowieso sauber und rein ist.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.01.2014, 18:53     Titel:
  Antworten mit Zitat      
Hast du paar tips für mich für die if Bedingung ?
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: 01.01.2014, 20:16     Titel:
  Antworten mit Zitat      
Hallo,

mir ist nicht klar, was hier vorgegeben ist und woran man arbeiten soll.

Momentan ist es wenig sinnvoll, err==1 abzuprüfen, da err nur 0 sein kann.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.01.2014, 20:22     Titel:
  Antworten mit Zitat      
Hallo

die Fehler liegt eigentlich direkt in der Funktion und zwar in der Zeile 18,
da hast du ein END, welches der Funktion sagt, dass die Funktion hier zu Ende ist, obwohl nach dem END weitere Anweisungen kommen. Nach der Funktion-Ende dürfen nur weitere Funktionen folgen, aber keine direkten Anweisungen.

Die Lösung:
Also bringe das END ans Ende.

Code:


function [ x,x1,x2,t,err ] = overlay_sin( f1,A1,phi1, f2,A2,phi2,P )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here

x = 0;
x1 = 0;
x2=  0;
t = 0;
err =0;

dt = 0.125e-3;


% end
%c)


fmin =min(f1,f2);

%d)

t = (0:dt:P/fmin - dt);

%e)

x1t = A1*sin(2*pi*f1*t+phi1);
x2t = A2*sin(2*pi*f2*t+phi2);
xt = x1t +x2t;

%i)

if( err ==1)
    return;  
end

end
 


Zuletzt bearbeitet von denny am 04.01.2014, 13:34, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Lab21
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2014, 02:52     Titel:
  Antworten mit Zitat      
Das end zweimal zu schreiben hat nichts geholfen .

Matlab meinte das es nicht zulässig ist.

Error: File: overlay_sin.m Line: 19 Column: 1
This statement is not inside any function.
(It follows the END that terminates the definition of the function "overlay_sin".)

Weiss jemand wie ich die fehlermeldung weg bekomme?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.01.2014, 23:23     Titel:
  Antworten mit Zitat      
Lab21 hat Folgendes geschrieben:
Das end zweimal zu schreiben hat nichts geholfen .

Matlab meinte das es nicht zulässig ist.

Error: File: overlay_sin.m Line: 19 Column: 1
This statement is not inside any function.
(It follows the END that terminates the definition of the function "overlay_sin".)

Weiss jemand wie ich die fehlermeldung weg bekomme?


Blödsinn, ich meinte nur ein END, und Matlab sagt dir genau in welcher Zeile das Problem doch liegt, also muss dieses END weg.

Sie oben, da habe das END doch auskommentiert
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.