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

Matlab verständnis Problem

 

matlaber21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2014, 11:22     Titel: Matlab verständnis Problem
  Antworten mit Zitat      
Hallo leute ich habe gerade probleme bei dieser Aufgabe wozu ich auch ein foto hochlade.

Zuerst mal der coder der Funktion:

Code:


function [ UIR,deltat] = Bit2Signal( code,Rbit )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here

ft = 40e3;

N0 = 50;

Tbit = 1/Rbit;



deltat = 1/(N0*ft);

%d)
t = 0:deltat:Tbit;

%e)
if(code==0)             %3
    A=0;                
else
    A=5;                
end

UIR = A*sin(2*pi*ft*t);




end




 





Code:


clear all; close all;clc;

%f)

Rbit = 2000;
[ UIR0,deltat] = Bit2Signal( 1,Rbit );

[ UIR1,deltat] = Bit2Signal(0,Rbit );

%h)

UIR=[UIR0 UIR1];                    
t=0:deltat:(length(UIR)-1)*deltat;

figure;

subplot( 2,1,1);

plot( t, UIR);

%i)

title('Spannung des Infrarot Signals');

xlabel('{\itt/s}');
ylabel('{\itU_{IR}(t)}/V');


 



Ich verstehe leider nicht wie die hier in der Musterlösung auf den Zeitvektor kommen ?

Ich hoffe irgend ein Experte in diesem Forum kann mir das bitte erklären ?

IMG_0457.JPG
 Beschreibung:

Download
 Dateiname:  IMG_0457.JPG
 Dateigröße:  3.98 MB
 Heruntergeladen:  325 mal
IMG_0456.JPG
 Beschreibung:

Download
 Dateiname:  IMG_0456.JPG
 Dateigröße:  4.66 MB
 Heruntergeladen:  314 mal


matlaber21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2014, 11:24     Titel:
  Antworten mit Zitat      
Ich verstehe nicht wie die auf diesen Zeitvektor kommen:

t=0:deltat:(length(UIR)-1)*deltat; ?
 
matlaber21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2014, 17:35     Titel:
  Antworten mit Zitat      
Kennt sich jemand hier mit der Aufgabe aus ?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.05.2014, 13:14     Titel:
  Antworten mit Zitat      
Zitat:
Ich verstehe nicht wie die auf diesen Zeitvektor kommen:

t=0:deltat:(length(UIR)-1)*deltat; ?


In der Aufgabe h steht ja, definieren zu UIR einen passenden Zeitvektor t => das heißt die Länge/Größe UIR und t muss gleich lang sein.
Außerdem ist dort eine Schrittweite deltat angegeben, also z.B
sei UIR ein Vektor mit 100 Elementen, und die Schrittweite deltat 2
Damit ist UIR 100 Elemente lang
also muss t auch 100 Elemente haben, da aber die Schrittweite 2 ist, braucht man Doppelte Länge von UIR damit man 100 Elemente in t Vektor hat.
also
Code:

1:100 % => ergibt 100 Elemente
1:2:100 % => ergibt nur 50 Elemente =>
% deswegen Doppelte Länge
1:2:100*2 % =>ergibt 100 Elemente
 
Private Nachricht senden Benutzer-Profile anzeigen
 
matlaber21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2014, 14:47     Titel:
  Antworten mit Zitat      
Tut mir leid ich vertseh immer noch nicht warum er das hier genau macht?
(length(UIR)-1)*deltat

Woher weiss ich denn genau wie lang t ist ?


t war ja das hier oder ?

t = 0:deltat:Tbit;

trotdem verstehe ich es nicht?

Kannst du es mir nochmals irgendwie versuchen zu erklären?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.05.2014, 16:58     Titel:
  Antworten mit Zitat      
matlaber21 hat Folgendes geschrieben:
Tut mir leid ich vertseh immer noch nicht warum er das hier genau macht?
(length(UIR)-1)*deltat

Kannst du es mir nochmals irgendwie versuchen zu erklären?


length - ist eine Funktion in Matlab, welche die Länge des Vektors berechnet. Man übergibt einen Vektor UIR und bekommt zurück eine Zahl, welche der Anzahl Elemente entspricht, z.B [1,2,3,...,99,100] ergibt 100 Elemente

Da aber der Zeitpunkt von 0 startet, bedeutet das, wenn ich mir einen Zeitvektor von 0 bis 100 generiere (Schrittweite 1), bekomme ich ein Element mehr, also
0, 1, 2 ...., 99, 100 => ergibt 101
Deswegen muss man eine Eins abziehen, damit tatsächlich 100 Elemente generiert werden, also length(UIR) - 1

Betrachten wir mal den colon Operator (siehe Link dazu)
Mit einem Colon-Operator kann man sich einen Array generieren
Syntax: von:bis oder von:schrittweite:bis, wobei von/bis/schrittweite Zahlenwerte sein müssen
also 1:100 oder 1:1:100 ergibt das gleich und zwar 1, 2, 3, ... 99, 100 Vektor
Wenn ich jetzt die schrittweite verändere, dann
1:2:100 1,1+2=3,3+2=5,7,9,11,..97,99 , Anzahl der Elemente halbiert sich also nur 50

1:4:100 1, 1+4=5, 9, 13, ...., 93, 97, Anzahl der Elemente ist um vier weniger also 25

Merkst die Abhängigkeit der Länge von der Schrittweite?

Deswegen muss man, um die Länge zu erhalten die von der Schrittweite verursachte Reduktion rückgängig zu machen, also mit deltat multiplizieren;
(length(UIR)-1)*deltat

Zitat:

Woher weiss ich denn genau wie lang t ist ?

Das steht in der Aufgabestellung, t muss gleich UIR sein, um UIR in Abhängigkeit von t zu plotten. Wenn man Punkte in X-Y- Achsen einträgt passiert dass ja nur Paarweise, also (x,y), deswegen muss die Anzahl von X und Y Werte gleich sein.
Genau so ist es mit UIR und t, t-Werte --- auf X-Achse und UIR --- auf Y-Achse.

Deswegen wird in der Code die Länge von UIR abgefragt.



Zitat:
t war ja das hier oder ?

t = 0:deltat:Tbit;

trotdem verstehe ich es nicht?


Hier sind zwei Stellen, einmal in der Funktion um ein Signal zu berechnen, das ist denke ist klar,
Und anderes Mal für die Darstellung außerhalb der Funktion.
Hier werden zwei Signale vereint also UIR0 und UIR1 zu UIR, dadurch braucht man einen neun Zeitvektor der der Länge von UIR entspricht.
Da man Signale an einander dargestellt haben möchte, muss Zeitvektor kontinuierlich hochgezählt werden. z.B t für UIR0 sei 1:100 und UIR1 1:50
t für Darstellung muss [1:100,101:150] sein.

PS:
1)
Auf jedenfall hilft nur zu experimentieren und in der Hilfe zu lesen Getted Started Kapitel sind wärmsten zu empfehlen

2)
ich empfehle das Programm Schritt für Schritt durchzugehen, also die Funktionen/Scripte abspeichern, Breakpoints setzten und dann mit Debbuger durchgehen und sich die Werte Ergebnisse anzuschauen.
Private Nachricht senden Benutzer-Profile anzeigen
 
matlaber21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2014, 19:30     Titel:
  Antworten mit Zitat      
Danke denny jetzt habe ich es soweit gut verstanden.

Allerding möchte ich noch eine Sache wissen woher weisst du hier das die Schrittweite 1 ist ?

Weil ich glaub in der Aufgabe stand das nicht oder?

Und noch eine kleine frag wenn die schrittweite 4 wäre dann müsste ich doch einfach 4 abziehen oder ?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 27.05.2014, 11:42     Titel:
  Antworten mit Zitat      
matlaber21 hat Folgendes geschrieben:
Danke denny jetzt habe ich es soweit gut verstanden.

Allerding möchte ich noch eine Sache wissen woher weisst du hier das die Schrittweite 1 ist ?

Weil ich glaub in der Aufgabe stand das nicht oder?


Hallo ich habe nicht gesagt, dass die Schrittweite 1 ist, das war nur ein Beispiel, um einfacher den Sachverhalt zu erklären

Die Schrittweite liefert ja die Funktion, in der Aufgabe heißt ja für die Simulation sollen pro Periode der Träger-Frequenz ft N0=50 Stützwerte berechnet werden. Das heißt die Schrittweite wird aus ft und N0 berechnet. Diese Werte sind fest vorgegeben.
Code:


function [ UIR,deltat] = Bit2Signal( code,Rbit )
ft = 40e3;

N0 = 50;
deltat = 1/(N0*ft);
...
 


Zitat:

Und noch eine kleine frag wenn die schrittweite 4 wäre dann müsste ich doch einfach 4 abziehen oder ?

Ich verstehe deine Frage nicht? Die Schrittweite ist doch egal, man stellt eine Formel auf, die dann für jede Schrittweite funktioniert.
Also will ich bestimmte Anzahl Elemente in Vektor bekommen, wie bei Schrittweite 1, dann muss ich die Ursprungslänge mit der Schrittweite multiplizieren.

Wie gesagt du sollst dir Matlab öffnen und dort mal verschieden Vektoren generieren, und versuchen bei verändern der Schrittweite, immer gleich viele Elemente zu erhalten.
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.