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

Vergleich der Arrays

 

joekey
Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 26.06.2008, 22:06     Titel: Vergleich der Arrays
  Antworten mit Zitat      
Hallo,

ich bin wieder mal auf der Suche nach Antworten. Question

Ich hab 2 Arrays:

a = [1 4 2 5 6] und b = [2 4 5 6 7]

Jetzt will ich die einzelnen Elemente der zwei Arrays vergleichen, d.h. der erste Element in Array(a) soll mit allen anderen Elementen der beiden Arrays verglichen werden, (1<4, 1<2, 1<5, 1<6, 1<2, 1<4, 1<5, 1<6, 1<7) und so weiter. Als produkt dieses Vergleichs sollte eine Array produziert werden die, die Vergleichsergebnisse darstellt.

Ich kann es mittels for schleifen implementieren und es interessiert mich ob es eine effizientere Möglichkeit gibt.

Danke Joe
Private Nachricht senden Benutzer-Profile anzeigen


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2008, 11:02     Titel:
  Antworten mit Zitat      
Hallo,

was genau soll in deinem Array drin stehen?
Willst Du nur ein einziges Element mit allen anderen vergleichen?

Wenn ja, dann kannst Du folgendes machen.
Code:
% Index des Elementes für den Vergleich
n = 1;
% Erzeuge Vektor ohne n-tes Element
ab = [a(1:n-1) a(n+1:end) b];
% Vergleiche
cmp = a(n)<ab;


Ist jetzt allerdings sehr speziell (man sollte die Dimension der Vektoren prüfen uvm.) auf deine Frage ausgerichtet.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 29.06.2008, 19:56     Titel:
  Antworten mit Zitat      
Hallo dib0r,

danke für deinen Beitrag. War zwar nicht das was ich gesucht habe, aber den Aha-Effekt hat es ausgelösst und ich konnte mein Problem lösen.

LG Joe
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 30.06.2008, 00:14     Titel:
  Antworten mit Zitat      
Hi,

wie hast Du es gelöst?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 02.07.2008, 17:14     Titel:
  Antworten mit Zitat      
Hallo,

also es ging ja darum, dass ich ein abstraktes Muster einer Array erstellen wollte, wobei die Array von 1...n Vektoren (size (1,4)) gebildet wird. Unten steht ein code für die Pattern Klasse. Zuerst wird die als Argument ankommende Array (Bars) vectorized (methode vectorizeBars). Das mache ich so wie du es vorgeschlagen hast, bis auf das löschen von dem Element, mit dem der entstandene Vector verglichen wird. Das bewirkt, dass ich bei jedem Vergleich auch die gleichen Elemente vergleiche. Im nächsten Schritt vergleiche ich den entstandenen Vector mit einzeln mit allen seinen Elementen. Somit entsteht ein Array bei dem size(array,1) = size(array, 2)= length(vector) und der Anzahl der Elemente in diesem Vector numel(array) = size(array,1) * size(array, 2).

Hoffentlich habe ich dich jetzt nicht verwirrt. Der Beispiel sollte mehr klarheit schaffen.

LG Joe
Code:

% test
pat = cPattern([3 1 2 2 3; 3 2 3 4 2]); % create object
pat.vectBars      % zeigt vectorized bars
pat.def              % pattern definition
 

Code:

classdef cPattern < handle

    properties
        vectBars
        def
    end

    methods
        function obj = cPattern(bars)   % constructor
            obj.vectBars = cPattern.vectorizeBars(bars);
            obj.def      = cPattern.getPatDef(obj.vectBars);
        end
    end
    methods (Static)
        function vectBar = vectorizeBars(bars) % bars will be vectorized
            tempVect = [];
            for i = 1:size(bars,1)
                if isempty(tempVect)
                    tempVect = bars(i,2:5);
                else
                    tempVect = cat(2,tempVect,bars(i,2:5));
                end
            end
            vectBar = tempVect;
        end
        function patDef = getPatDef(vectBars) % create pattern definition
            tempPatDef = [];
            for i = 1: length(vectBars)
                if isempty(tempPatDef)
                    tempPatDef = vectBars(i)< vectBars;
                else
                    tempPatDef = cat(1,tempPatDef,vectBars(i)< vectBars);
                end
            end
            patDef = tempPatDef;
        end
    end
end
 
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 - 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.