Beginne zunächst mal mit einer Suche im Forum und dem Internet. Vielleicht habt ihr in Signal-Verarbeitung auch etwas zum Thema Phasenverschiebung durchgenommen?
Dann probiere die dort gefundenen Vorschläge aus und posten den bisherigen Matlab-Code dazu. Wenn Du dann konkrete Fragen dazu stellst, wird Dir hier gerne geholfen, denn das ist ja ein Matlab-Forum.
Viele Grüße, Jan
Sanjaa
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.12.2016, 13:26
Titel:
Hallo,
ich habe nachgeschaut. Für einen Matlab amateur ist es schwierig. Ich habe leider sehr wenig ahnung.
Im Prinzip reicht es mir schon, wenn ich den Abstand auf der x-Achse beider Kurven erhalte. Vielleicht gibt es irgendeinen einfachen Befehl.
ich habe nachgeschaut. Für einen Matlab amateur ist es schwierig. Ich habe leider sehr wenig ahnung.
Dass wir dir auf konkrete Fragen, welche sich um deine Umsetzung in Matlab drehen, antworten und helfen, ist keine Sache. Aber mit persönlich kommt es so vor, als würdest du deutlich zu wenig eigenen Hirnschmalz investieren und zu wenig versuchen es wirklich zu lernen.
Die Ahnung, die du nicht hast, entsteht durch lernen, nachmachen, ausprobieren.
Besonders durch ausprobieren.
Wenn du nicht mindestens 10 Wege herausgefunden hast, wie es NICHT geht, hast du nichts gelernt dabei
Nebenbei ist das Ziel deiner Aufgabe sicherlich nicht, "befrage die Foren und laß dir jeden Schritt auf dem Silbertaplett servieren", sondern bringe dir bei, wie man sowas lößt, finde selber eine Lösung.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Die Antworten in diesem thread drehen sich nicht mehr um Matlab. Eigentlich tauschen wir hier solche Nachrichten nur per PN aus, da sie nicht von allgemeinem Interesse für ein Matlab-Forum sind. Da Du aber als Gast angemeldet bist, kann man keine PNs verschicken und so landen die eigentlich persönlichen Mitteilungen im öffentlichen Forum. Ich belasse sie dort, weil es Dir hoffetnlich besser hilft, als wenn Deine Fragen einfach ignoriert werden.
Zitat:
Vielleicht gibt es irgendeinen einfachen Befehl.
Wenn es den wirklich gibt, wirst Du ihn auch selbst finden können. Weder das Internet, z.B. WikiPedia oder goMatlab, noch die Dokumentation von Matlab neigen zu irgendwelchen Heimlichkeiten. Suche also einfach nach "Phasenverschiebung", lasse Dir von z.B. www.dict.cc den Ausdruck ins Englische übersetzen, nutze
docsearch
.
Erst wenn das nicht weiterhilft, ist das Forum der nächste Schritt. Stelle dann Deine Fragen präzise. Das ist wichtig, denn sonst verplempern die Antwortenden ihre Zeit. "Ich habe 2 CSV Dateien" hilft z.B. nicht weiter, denn vermutlich kannst Du die Files doch schon importieren, oder? Also hast Du die Daten bereits als Vektoren oder Matrix vorliegen - und hier wäre es notwendig zu wissen, in welcher Form. Dass die Daten aus CSV-Files stammen, ist dagegen nicht von Belang.
Lies doch mal ein paar andere Threads durch um zu sehen, wie andere Leute versuchen effizient an Lösungen zu kommen.
Viele Grüße, Jan
Sanjaa
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.12.2016, 21:41
Titel:
Hi,
ist es möglich den Code auf meine vorhandenen Signale zu verändern?
% function: PhDiff = phdiffmeasure(x, y) % x - first signal in the time domain % y - second signal in the time domain % PhDiff - phase difference Y -> X, rad
% represent x as column-vector if it is not ifsize(x, 2) > 1
x = x';
end
% represent y as column-vector if it is not ifsize(y, 2) > 1
y = y';
end
% remove the DC component
x = x - mean(x);
y = y - mean(y);
Was bedeutet das? Von welchen Parametern sprichst Du und wo würdest Du das eingeben?
Zitat:
-Bei Signal generieren müsste ich irgendwie meine vektoren einfügen
Ich finde im Code nichts, was zu "Signale generieren" passt. Die beiden Signale müssen als "x" und "y" übergeben werden. Von "irgendwie einfügen" kann da also nicht die Rede sein.
Was bekommst Du denn, wenn Du einfach beide Signale als Inputs dieser Funktion verwendest?
Hast Du meinen Hinweis bzgl. präsizer Fragen gelesen? Man kann hier nur raten, was Du versucht hast und worauf sich Deine Fragen beziehen könnten.
Gruß, Jan
Sanjaa
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.12.2016, 14:28
Titel:
Sorry aus unerklärlichen Gründen wurde der falsche Code eingefügt. Hier der richtige.
Code:
% signal parameters
fs = 44100;
f0 = 1000;
T = 0.1;
% preparation of the time vector
N = round(T*fs);
t = (0:N-1)/fs;
% generation of the signal
x = sin(2*pi*f0*t) + 0.02*randn(1, N);
y = 0.5*sign(sin(2*pi*f0*t - pi/6)) + 0.02*randn(1, N);
Bist Du sicher, dass das der richtige Code ist? Immerhin macht der vorherige doch ganz genau das, was Du suchst. Müsstest Du nicht einfach nur für x und y Deine beiden Signale nehmen?
Gruß, Jan
Sanjaa
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.12.2016, 09:32
Titel:
Hallo,
die beiden Codes arbeiten zusammen. Ich rufe nämlich die Funktion vom ersten Code im zweiten Code auf.
Im ersten Code muss ich glaube ich nichts verändern. Den zweiten Code hab ich etwas verändert. Sieht folgendermaßen aus
Bitte poste immer die vollständige Fehlermeldung. Das hilft den Lesern sofort zu erkennen, wo welches Problem auftritt.
Poste zudem den exakten Code, den Du verwendst.
Zitat:
Die Warnung wird an der Zeile, wo ich meine beiden Dateien importiere.
Es startet, aber es wird mir ein falscher Winkel angezeigt.
Welcher Winkel wird Dir wo angezeigt und welchen erwartest Du? Vielleicht ist ja nur Deine Erwartung falsch oder es werden andere einheiten verwendet.
Die Bearbeitung dieses Threads wird zunehmend mühsam. Bitte lies Deine Fragen nach dem Tippen nochmal durch und überlege, ob sie für einen vollkommen Unbeteiligten nachvollziehbar sind. Du bist weit davon entfernt zu viele Informationen zu geben und trotzdem ist dies schon einer der längsten Threads im Forum.
Mit dem Code-Teil zum Zeichnen gibt es keine Probleme, oder? Dann konzentriere Dich auch beim geposteten Code auf die eigentlichen Zeilen. Diese müssen dann aber wiederum so vollständig sein, dass man das Problem auch reproduzieren kann.
Gruß, Jan
Sanjaa
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.12.2016, 10:35
Titel:
Hallo,
ich habe den fehler gefunden.Falls sich doch kein weiterer fehler eingeschlichen hat
Danke für die Hilfe!
Sanjaa
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.12.2016, 11:54
Titel:
Ich hätte gerne noch das mein Programm mehrere Dateien gleichzeitig bzw. nacheinander bearbeitet.
Dabei will ich es mit Tom_Gast´s Code versuchen(Ist für eine Datei gedacht):
subplot(1,2,1); hold on; %Damit später alle Plots angezeigt werden
subplot(1,2,2); hold on;
WertPeak = zeros(1,numel(dateien)) %Preallocation
for indx = 1:numel(dateien)
fo = f_vec(indx);
array = csvread(dateien{indx});
%Hier kommt dein bisheriger Code hin
%Also Datei einlesen und FFT durchführen und Plotten
WertPeak(indx) = max(p); %Wert in Vektor abspeichern
end
Der Code ist für eine Datei gedacht. Ich muss allerdings 2 Dateien gleichzeitig in Verbindung setzten(datei1 mit datei3 sowie datei2 mit datei4). Die Frequenzen beider Dateien sind gleich.
Das Ergebnis wird mir von "PhDiff" angezeigt. Wie kann man es nun mit 2 for-Schleifen realisieren? Habe an das hier gedacht:
subplot(1,2,1); hold on; %Damit später alle Plots angezeigt werden
subplot(1,2,2); hold on;
phase = zeros(1,numel(dateien)) %Preallocation
for indx1 = 1:numel(dateien1) for indx2 = 1:numel(dateien2)
fo = f_vec(indx1);
Ich denke dass kann ich so mit den beiden for-Schleifen nicht machen?
Ich hoffe ich habe nichts vergessen zu erwähnen
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
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.