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

vektoren dynamisch erzeugen

 

DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 08.08.2011, 16:21     Titel:
  Antworten mit Zitat      
Sind das die richtigen Daten? Hier sind ja schon alle Nullen weg...
Private Nachricht senden Benutzer-Profile anzeigen


elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 09.08.2011, 08:58     Titel:
  Antworten mit Zitat      
guten morgen,

ja tut mir leid!
Ich bin schon ganz blöd durch die ständig veränderten Files, bitte entschuldige!

Hier ist die richtige Datei!

limit.zip
 Beschreibung:

Download
 Dateiname:  limit.zip
 Dateigröße:  510 Bytes
 Heruntergeladen:  250 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.08.2011, 09:18     Titel:
  Antworten mit Zitat      
Ok...jetzt passt's

Diese Daten sollen jetzt also ohne die Nullen in die Struktur eingelesen werden, wobei limits{1,1} die erste und limits{1,2} die Daten der zweiten Kennlinie sind.

Dann soll jeweils nach der ersten Spalte (Frequenzwerte) aufsteigend in jeder Kennlinie sortiert werden.

Müssen die Kennlinien untereinander nicht auch noch sortiert werden?
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 09.08.2011, 09:35     Titel:
  Antworten mit Zitat      
Ja das denke ich wäre sinnvoll, denn ich möchte ein gemeinsames Minimum und/oder maximum der beiden(später auch mehreren) Kennlinien plotten!
Somit muss ja die Abfrage bei der Kennlinie mit dem kleinsten Frequenz Wert gestartet werden!
Danke das du mir hilfst!!
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.08.2011, 09:35     Titel:
  Antworten mit Zitat      
mal als Bsp für die Sortierung:

Zitat:

kennlinie 1 =

0.5300 30.0000
1.7100 30.0000
45.2000 12.0000
47.8000 12.0000
62.5000 12.0000
75.2000 12.0000
86.6000 12.0000
88.1000 12.0000
90.9000 12.0000
109.1000 12.0000
140.6000 12.0000
168.7000 12.0000
176.3000 12.0000
242.4000 12.0000
310.0000 20.0000
320.0000 20.0000
429.0000 25.0000
439.0000 25.0000


Du hattest ja bisher vor, immer 2x- und 2y-Werte in eine Zelle zu speichern. Hat das einen bestimmten Grund? Dürfen dann nur jeweils 4er Päckchen sortiert werden oder so wie oben angegeben, alle Freq.werte einzeln betrachten und sortieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 09.08.2011, 09:51     Titel:
  Antworten mit Zitat      
Zitat:
Du hattest ja bisher vor, immer 2x- und 2y-Werte in eine Zelle zu speichern.

Das wollte ich deswegen, um die daten1. von 0 zu trennen und um sie später auf x - Werte aller Kennlinien vergleichen zu können um auf die betreffenden Punkte für meine Minimum Kennlinie zu kommen.


Die 0 hatte eigentlich schon eine Berechtigung. denn die kennlinien werden logarithmisch geplottet und dadurch erreiche ich, das ich keine Schrägen in den jeweiligen kennlinien widerfinde!

ob das jetzt 2er oder 4er Päckchen sind ist egal. Das wichtigste ist, das die Sortierung so erfolgt, dass ich später auf relativ unkomplizierte weise meine Minimakennlinie plotten kann!
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.08.2011, 09:56     Titel:
  Antworten mit Zitat      
Sorry...das verstehe ich jetzt nicht.

Ist das Bsp für die erste Kennlinie aus limits nun korrekt, oder muss anders sortiert werden? Also immer nur die Pakate, die durch Null getrennt waren?
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 09.08.2011, 10:52     Titel:
  Antworten mit Zitat      
hey,

es ist korrekt sortiert!

Ich weiß nur nicht, welcher Weg einfach ist, um am Ende das besagte Minimum zu erhalten!

Habs auch schon so sortiert und bin jetzt am überlegen ob ich jetzt wieder die Nullen eifügen soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.08.2011, 11:02     Titel:
  Antworten mit Zitat      
Nun dann bin ich da aber raus...erst rausnehmen und dann wieder einfügen ist doch... Rolling Eyes

Hier ist die Funktion, die dir die Daten in die Struktur lädt und sortiert:

Code:

function [Kennlinie,list_sort_kennlinien] = load_and_sort(limits)

% Kennlinien-Daten aus Limits in Struktur laden
for i=1:length(limits)
    Kennlinie(i).name     = ['Limit', num2str(i)];
    Kennlinie(i).frequenz = [limits{1,i}(limits{1,i}(:,1)>0,1)];
    Kennlinie(i).dbV      = [limits{1,i}(limits{1,i}(:,2)>0,2)];
end

% Frequenzwerte jeder Kennlinie aufsteigend sortieren
% Anzahl der Kennlinien ermitteln
anzahl_k = length({Kennlinie.name});
for i=1:anzahl_k
    [Kennlinie(i).frequenz,index] = sort(Kennlinie(i).frequenz);
    % dbV Werte entsprechend der Sortierung der Frequenzen sortieren
    Kennlinie(i).dbV              = Kennlinie(i).dbV(index);
end

% Kennlinien untereinander nach dem 1. Frequenzwert aufsteigend sortieren
for i=1:anzahl_k
    min_freq_1(i) = Kennlinie(i).frequenz(1);
end
% erste Frequenzwerte sortieren
[freq_1_sort,list_sort_kennlinien] = sort(min_freq_1);
% in list_sort_kennlinien steht nun die Reihenfolge der sortierten
% Kennlinien. So muss nicht die komplette Struktur umsortiert werden
 
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 09.08.2011, 11:30     Titel:
  Antworten mit Zitat      
ich weiss ja, werd ich auch nicht machen!

Erstmal danke, sowas ähnliches hab ich mir auch schon gebastelt!
Code:
%% Anzahl der Kennlinien ermitteln
anzahl_k = length(data);
% assignin('base','anzahl_k',anzahl_k);
for ii=1:anzahl_k
    MyStruct(ii,1).name = ['Limit', num2str(ii)];
    MyStruct(ii,1).freq = data{ii}(:,1);
    MyStruct(ii,1).dBuV = data{ii}(:,2);
end
%sortieren der Daten
for x = 1:anzahl_k
    [sorted_Data, idx] = sort(MyStruct(x,1).freq);
    MyStruct(x,1).freq = sorted_Data;
    MyStruct(x,1).dBuV = MyStruct(x,1).dBuV(idx);
   
end

Eine Frage, wieso machst du hier
Zitat:
Code:
Kennlinie(i).frequenz = [limits{1,i}(limits{1,i}(:,1)>0,1)];


eine Abfrage >0,1?

Mein Problem besteht einfach nun, wie bekomm ich jetzt daraus meine Minimum - Kennlinie?! Shocked
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.08.2011, 11:46     Titel:
  Antworten mit Zitat      
Ich benutze alle werte aus Limit die > Null sind Wink, denn die Nullen sollten ja weg.

Was meinst du mit Minimum-Kennline...die Gesamtkennlinie?
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 09.08.2011, 11:54     Titel:
  Antworten mit Zitat      
oh Gott ja stimmt, das berühmte sprichwort mit den Wald und den Bäumen! Very Happy

Naja, die daten die du sortiert hast entsprechen ja zwei verschiedenen Kennlinien. Mein Hauptziel ist es ja immer das X-y- Wertepaar der entsprechenden Kennlinie zu plotten, das kleiner als das andere ist!
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.08.2011, 13:58     Titel:
  Antworten mit Zitat      
Das verstehe ich leider auch nicht...ich habe dir zwar Teile des Programms geschrieben, aber deine Gedanken kann ich dennoch nicht lesen, noch habe ich einen Überblick über deine Daten und deine Vorstellungen. Da musst du schon präziser werden.

Damit erstellst du jetzt die Gesamtkennlinie: Wie ich dich verstanden habe, stören dich aber die Schrägen. Es dürften also immer nur Punkte verbunden werden, die den gleichen Y-Wert haben.

Code:


% Kennlinien laden und sortieren
[Kennlinie,list_sort_kennlinien] = load_and_sort(limits);

% Anzahl der Kennlinien ermitteln
anzahl_k = length({Kennlinie.name});
% Freq.-Minima jeder Kennlinie ab K2 ermitteln
for i=2:anzahl_k
    minima_x(i-1) = min(Kennlinie(list_sort_kennlinien(i)).frequenz);
end

% Kennlinie gesamt:
Kennlinie(anzahl_k+1).name = 'K gesamt';
Kennlinie(anzahl_k+1).frequenz = [];
Kennlinie(anzahl_k+1).dbV = [];

% gesamte Kennlinie erstellen
m = 1; % aktueller Index der n+1. Kennlinie
l = 1; % l = gibt den aktuellen Index von K gesamt an
for n = 1:length(minima_x)
    if length(Kennlinie(list_sort_kennlinien(n+1)).frequenz) < length(Kennlinie(list_sort_kennlinien(n)).frequenz)
       k = length(Kennlinie(list_sort_kennlinien(n+1)).frequenz);  
    else
       k = length(Kennlinie(list_sort_kennlinien(n)).frequenz);
    end
    for i = 1:k  
        % i. Frequenzwert der n. Kennlinie kleiner n. minimum?
        if  Kennlinie(list_sort_kennlinien(n)).frequenz(i) <= minima_x(n)
            % ja...Werte der n. Kennlinie nehmen
            Kennlinie(anzahl_k+1).frequenz(l) = Kennlinie(list_sort_kennlinien(n)).frequenz(i);
            Kennlinie(anzahl_k+1).dbV(l) = Kennlinie(list_sort_kennlinien(n)).dbV(i);
        else
            % Werte von der nächsten Kennlinie (n+1) nehmen
            Kennlinie(anzahl_k+1).frequenz(l) = Kennlinie(list_sort_kennlinien(n+1)).frequenz(m);
            Kennlinie(anzahl_k+1).dbV(l) = Kennlinie(list_sort_kennlinien(n+1)).dbV(m);  
            m = m + 1;
        end
        l = l + 1;
    end
    % aktuellen Index von K gesamt in l speichern
    l = l + m - 1;
    j = m; % j wird für den Rest benötigt
    m = 1; % nächste Kennlinie: m zurücksetzen
end
% Rest von letzter Kennlinie anhängen
Kennlinie(anzahl_k+1).frequenz(l:l + length(Kennlinie(list_sort_kennlinien(anzahl_k)).frequenz) - j) = Kennlinie(list_sort_kennlinien(anzahl_k)).frequenz(j:end);
Kennlinie(anzahl_k+1).dbV(l:l + length(Kennlinie(list_sort_kennlinien(anzahl_k)).dbV) - j) = Kennlinie(list_sort_kennlinien(anzahl_k)).dbV(j:end);  

 
semilogx(Kennlinie(list_sort_kennlinien(1)).frequenz .* 10^6, Kennlinie(list_sort_kennlinien(1)).dbV,'b*-','LineWidth',2);
hold on
semilogx(Kennlinie(list_sort_kennlinien(2)).frequenz .* 10^6, Kennlinie(list_sort_kennlinien(2)).dbV,'r*-','LineWidth',2);
semilogx(Kennlinie(3).frequenz .* 10^6,Kennlinie(3).dbV,'g.-','LineWidth',2);
hold off;
grid on;
%axis([0.9*min(Kennlinie(1).frequenz) 1.1*max(Kennlinie(3).frequenz) 48 55]);
xlabel('Frequenz in [MHz]');
ylabel('Magnitude in [dBµV]');
legend('K1','K2','K3','K gesamt')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 09.08.2011, 14:35     Titel:
  Antworten mit Zitat      
Hey
das geht schon in die richtige Richtung, aber wie du gesagt hast kann ich die Schrägen nicht brauchen.
Und ja genau es dürfen nur die punkt verbunden werden mit gleichen y-Werten.
Tut mir leid wegen der schlechten Beschreibung, aber du hast es trotzdem richtig verstanden.

Mich ärgert mittlerweile sehr stark, dass ich es programmiertechnisch nicht umsetzten konnte und du hast es jetzt auf ein paar Stunden geschafft! Ich glaube ich lass des programmieren jetzt dann bleiben!!Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.08.2011, 14:43     Titel:
  Antworten mit Zitat      
Geschafft habe ich es noch längst nicht....es geht nämlich nicht so wie die ursprüngliche Version. Eigentlich muss die Gesamt-Kennlinie ja komplett aus der blauen K. bestehen und dann nur ein Rest der roten K. Schau dir mal mein Ergebnis an.

Jeder hat mal klein angefangen...ich würde gegenüber einem echten Matlabprofi oder einem Informatiker auch alt aussehen Wink

Der eine rätselt gern oder spielt Sudoku...ich knobbel gern bei Programmen. Aber da braucht es oft Geduld bzw. mehrere Ansätz bis es geht. Ist bei mir nicht anders Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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.