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

aus mehreren Limit-Files eine resultierende Minimakennlinie

 

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: 29.07.2011, 08:10     Titel:
  Antworten mit Zitat      
Hey guten morgen DSP

erstmal danke für deine Arbeit!
Hast du dir meine Lösung auch mal kurz angesehen? Wer Sie nochmal kurz posten, weil ich zu doof war den Code-button richtig zu nutzen Sad
Code:

%% Max ß Min Teil 2
close all;
% function f = MaxAndMin(axesName,inputData)
% parsedData = inputData;
freq0 = [0.0300    0.1500    0.3000    0.5000    1.2500    4.2500];
dbu0 = [50    50    50    50    50    50];
parsedData = [freq0',dbu0'];
% zusätzliches limit file für test
freq1 = [0.67 0.88 3.90 4.59 5.77 6.23 8.54];
dbu1 = [52 52 52 52 52 52 52];
secondLimit = [freq1', dbu1'];
% nexter limit block für test
freq2 = [7.55  9.44  12.02  15.88 17.13 25.05 30.12 45.33 80.05];
dbu2 = [51 51 51 51 51 51 51 51 51];
thirdLimit = [freq2', dbu2'];

plot(parsedData(:,1), parsedData(:,2),'r', freq1, dbu1, 'b', freq2, dbu2, 'c');
hold on;
grid on;
set(gca,'xscale','log');
set(gca, 'ylim', [48 55]);
% Beschriftung der plots


min_array = [];

% maxValue = max(parsedData(:,1));
% min und max Werte der einzelnen limit - files
minVal_1 = min(parsedData(:,1));
minVal_2 = min(secondLimit(:,1));
maxVal_2 = max(secondLimit(:,1));
minVal_3 = min(thirdLimit(:,1));
maxVal_3 = max(thirdLimit(:,1));
%% Abfragen der limit Granzen

% Abfrage auf welchen limit file das resultierende starten soll
if(minVal_1>minVal_2)
    option = 1;
else
    option = 2;
end
% umgekehrte Fall(case 1 noch nicht bearbeitet)
switch option
   
    case 2,
             
% loop_count
for iii = 1:length(parsedData(:,1))
   
    if(parsedData(iii,1) < minVal_2)
       
        min_array(iii,:) = parsedData(iii,:);
         
    else
        % minVal_2 muss senkrecht auf erstes Limit springen
        min_array(iii,:) = [minVal_2, parsedData(1,2)];
       
        % wenn limit erreicht ist wird die for-loop abgebrochen
        break;
    end

end

% zweites limit wird an min_array angehängt
min_array = [min_array; secondLimit];  
end
% min_array(find(min_array(:,1) >= minVal_3),Smile = [];

% neues Limit muss wieder an min_array angehängt werden
min_array(length(min_array)+1,:) = [maxVal_2, thirdLimit(1,2)];
x = find(thirdLimit(:,1) >= maxVal_2);
min_array = [min_array; thirdLimit(x,:)];

plot(min_array(:,1), min_array(:,2),'g');
Xlabel ('f in [MHz]');
ylabel(' Magnitude in dBµV');
hl = legend('parsedData','secondLimit','thirdLimit' ,'result.Limit','Location','NorthWest');
hold off;


Mein problem ist, dass ich immer versuch alles in loops zu lösen und nur für eine bestimmte Anwendung, aber deinen Teil kann ma ja leicht modifizieren um sie für mehrere Limitfiles zu nutzen(das war eigentlich auch mein ziel)

Darf ich fragen, wie lange du für diese Lösung gebraucht hast? Ich saß nämlich einen kompletten Tag daran:(

Lg elcachon
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: 29.07.2011, 09:16     Titel:
  Antworten mit Zitat      
Wenn man in deinem Programm freq2 bei 9.0 beginnen lässt, wird jetzt aber ein Bereich dargestellt, der gar nicht existiert. Ist das so gewollt? Wenn man jetzt wirklich nur die Kennlinien nimmt, hätte man von K2 auf K3 eben ein Schräge, wenn man eine verbundene Linie plottet.

Ich habe nicht auf die Uhr geschaut, aber es waren wohl nicht mehr als 30 min. Lass dich davon aber nicht entmutigen. Ich habe schon viel programmiert und habe da wohl etwas mehr Erfahrung, wie man an das Problem ran geht. Ich bin eigentlich eher in C und C-ähnlichen Programmiersprachen zu Hause...ein Matlabprofi könnte den Code sicherlich noch optimieren. Aber...und da fällt meine kurze Arbeitszeit jetzt auf, habe ich längst nicht alle Fälle in meinem Programm abgedeckt, da ich sie gar nicht getestet habe. Das ich gestern noch eine Korrektur gepostet habe, bestätigt das ja nur. In dem Bsp. aus deinem letzten Programm, stimmt das Ergebnis mit meiner Neuerung wiederum nicht, da fehlt dann ein Teil von K2. Du siehst also, dass ich da auch noch mehr Zeit investieren müsste.

Es wäre sicherlich von Vorteil, wenn man die Kennlinien vorher sortiert, so dass man nicht alle Fälle beim Zusammenfügen betrachten muss. Oder man geht die Sache grundlegend anders an.
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: 29.07.2011, 11:48     Titel:
  Antworten mit Zitat      
hey,

ja da hast du recht. Des ist genau mein Problem, mein Programmentwurf ist halt von der vorgebenen Struktur der Limit-Files abhängig!
Das ist was ich noch anpassen muss und was mich ein bißchen nervt, denn nach soviel Investitoin an Zeit immer noch soviele Baustellen auftreten.

ABER Gott sei Dank gibt es ja solche Leute wie du, die einem ein bißchen unter die Arme greifen!!Smile

Eine Frage hätt ich noch:
Hat es einen bestimmten Grund das du als Variablen den Typ Struct gewählt hast, oder hätte man das auch mit Cell-Arrays lösen können?

Lg elcachon
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: 29.07.2011, 12:38     Titel:
  Antworten mit Zitat      
Man kann das sicherlich auch mit cell lösen. Die MyStruct habe ich gewählt, um leicht an alle Kennlinien zu kommen (was ja bei vielen Kennlinien von Vorteil ist) und wegen der Übersichtlichkeit beim Programmieren. Mit dem Namen z.B. MyStruct(1,1).xval(1) weiß man doch gleich welche Komponente der Kennlinie gemeint ist....1. x-Wert der 1. Kennline.

Du kannst den Namen der Struktur ändern und statt n. Zeilen, n Spalten machen z.B.

Code:

Kennlinie(1).name = 'K2'
Kennlinie(1).xval = ...
Kennlinie(1).yval = ...

Kennlinie(2).name = 'K2'
...
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.