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

Erstellung Sinusfunktion

 

el barto

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2013, 10:30     Titel: Erstellung Sinusfunktion
  Antworten mit Zitat      
Hi leute,

ich bin recht neu bei der Programmierung in scilab und habe folgendes Problem:
Ich möchte ein Sinussignal begrenzter Länge erzeugen.
Dieses Signal soll genau 1/10 der Länge von N haben.
Das Signal selbst funktioniert mit der Datenlänge N.
Es funktioniert nur nicht wenn ich versuche die zeitliche Begrenzung mit reinzubringen.

Hier das Programm:

N=2048 // Datenlänge
Dt= 1/500000 // Abtastrate
Fs= 50000 // Frequenz

zv = 0 : Dt : (N*Dt); // Zeitvektor
for i=1:N
if (i<=N) then
xu = sin(2*%pi*zv*Fs); //Sinussignal
else
xu=0;

end
end


Bitte um eure Hilfe

Danke


Headbucket
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 03.12.13
Wohnort: Dresden
Version: R2007B
     Beitrag Verfasst am: 19.12.2013, 11:09     Titel:
  Antworten mit Zitat      
Hallo,

verstehe ich dich richtig, dass du einfach nur einen (abgetasteten) Sinus mit einer bestimmten Anzahl von Abtastwerten erzeugen möchtest?

Zu deinem Programm:

Dt ist sicher die Abtastperiode und nicht die Abtastrate

Bedenke bei der Erstellung des Zeitvektors, dass du in deinem Beispiel 2049 Punkte abtastest, da du ja von Null startest.

Außerdem ergibt deine for-Schleife keinen Sinn, da du einfach 2048 mal die selbe Berechnung durchführst.

Hier mal ein Beispiel:
Code:
N = 2048 //Anzahl der Abtastwerte
fa = 500000 //Abtastfrequenz
Ta = 1/fa //Abtastperiode
fs = 50000 //Signalfrequenz
A = 1 //Amplitude

zv = 0:Ta:(N*Ta-Ta) //Zeitvektor

xu = A * sin(2 * %pi * fs * zv); //Sinussignal


N kannst du jetzt natürlich wählen, wie du willst. Das Beispiel ist ungetestet, da ich auch kein Sciplab besitze.

Grüße
Headbucket
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2013, 12:05     Titel: Erstellung Sinusfunktion
  Antworten mit Zitat      
Da hast du natürlich recht. Dt= 1/500000
Mein Problem ist, dass ich mit dem Sinus Vektor weiter arbeiten möchte. D.h. er muss die Datenlänge 2048 haben. Wenn ich in deinem neuen Code N/10 benutze, so wie ich es benötige, ist der Vektor entsprechend wieder zu klein. Aus diesem Grund hatte ich die fehlerhafte Schleife eingebaut. Very Happy
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2013, 12:12     Titel:
  Antworten mit Zitat      
Ich sehe gerad, dass das oben geschriebene wohl nicht 100% verständlich ist.
Soll bedeuten, dass das Sinussignal selbst nur N/10 lang sein soll und der restliche Sinusvektor mit Nullen aufgefüllt werden soll um auf die Gesamtdatenlänge von 2048 zu kommen.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2013, 12:17     Titel:
  Antworten mit Zitat      
ahh, ich hab es

Dankeschön für deine Mithilfe!!!!!

Programm:
zv = 0Very HappytSadN/10*Dt-Dt) //Zeitvektor


for i=1:N
if (i<=N/10) then
xu = A * sin(2 * %pi * Fs * zv); //Sinussignal
else xu(i)=0;
end
end
 
Headbucket
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 03.12.13
Wohnort: Dresden
Version: R2007B
     Beitrag Verfasst am: 19.12.2013, 12:28     Titel:
  Antworten mit Zitat      
Ah. Das musst du natürlich dazu schreiben.

Mit der Schleife rechnest du aber wieder N/10 mal "umsonst" Wink.

Effektiver wird es sein, wenn du mein Beispiel nimmst und einfach noch folgende Zeile am Ende anfügst:
Code:
xu(end+1:N) = 0

Damit füllst du alle Werte ab N/10 bis 2048 mit 0 auf.
Ich weiß allerdings nicht, ob es bei Scilab die funktion "end" auch gibt (gibt den höchsten index des vektors zurück).

Aber hauptsache es funktioniert Smile

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