|
el barto |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2013, 09:30
Titel: Erstellung Sinusfunktion
|
|
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
|
|
Beiträge: 34
|
|
|
|
Anmeldedatum: 03.12.13
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2007B
|
|
|
|
|
|
Verfasst am: 19.12.2013, 10:09
Titel:
|
|
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:
N kannst du jetzt natürlich wählen, wie du willst. Das Beispiel ist ungetestet, da ich auch kein Sciplab besitze.
Grüße
Headbucket
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2013, 11:05
Titel: Erstellung Sinusfunktion
|
|
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.
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2013, 11:12
Titel:
|
|
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: ---
|
|
|
|
|
|
Verfasst am: 19.12.2013, 11:17
Titel:
|
|
ahh, ich hab es
Dankeschön für deine Mithilfe!!!!!
Programm:
zv = 0tN/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
|
|
Beiträge: 34
|
|
|
|
Anmeldedatum: 03.12.13
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2007B
|
|
|
|
|
|
Verfasst am: 19.12.2013, 11:28
Titel:
|
|
Ah. Das musst du natürlich dazu schreiben.
Mit der Schleife rechnest du aber wieder N/10 mal "umsonst" .
Effektiver wird es sein, wenn du mein Beispiel nimmst und einfach noch folgende Zeile am Ende anfügst:
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
Grüße
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|