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

Alle Zeilen in einer Matrix finden die homogen sind

 

Akinh0
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2022, 02:48     Titel: Alle Zeilen in einer Matrix finden die homogen sind
  Antworten mit Zitat      
Hallo Leute,

ich muss für meine Bachelorarbeit ein Matlab-Skript verwenden und damit experimentieren. In dem Skript ist eine Variable als 4096x4 Matrix abgespeichert.

Dabei ist die Matrix so aufgebaut, dass die erste zeile 1 1 1 1 ist und danach jede kombination durchläuft mit den Zahlen 1-8. Also z.B 1 1 1 1 dann 2 1 1 1 dann 3 1 1 1 usw. bis eben 8 8 8 8 am ende steht. Jetzt möchte ich alle homogenen Zeilen finden. also quasi 1 1 1 1; 2 2 2 2; 3 3 3 3 bis eben 8 8 8 8. Leider habe ich überhaupt keinen ansatz wie ich das machen soll. kann mir jemand dabei helfen?

Gruß Akin
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.11.2022, 09:52     Titel:
  Antworten mit Zitat      
Hallo,

verwende diff, um die Differenz entlang der Zeilen zu bestimmen. Wenn diese Differenz immer 0 ist (Befehl: all), dann ist die Zeile "homogen".
Für weitere Unterstützung poste bitte, wie du die Matrix aufbaust.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Akinh0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2022, 14:45     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank wieder einmal für deine Hilfe Very Happy
ich habe es jetzt selbst hinbekommen mit der Funktion find( Bedingung A & Bedingung B usw.) und es funktioniert auch soweit alles so wie es soll.

Ich habe jetzt ein neues Problem.
Für das Experiment habe ich ein Skript geschrieben welches quasi einen Versuch 4096 mal ausführt. Ich habe mehrere Variablen mit denen ich Plots erstelle. Dabei sind alle Variablen 1x4096 Matritzen.
Mein Prof hat das Experiment selber auch durchgeführt, alledings mit einem deutlich größeren Datensatz (ca. 10^6 Einträge).
Ich muss jetzt die Plots für seine Daten auch erstellen, allerdings hat er für jede Variable mehrere Parts.

Also Bei mir zu Beispiel gibt es die Variable distance. Diese hat in allen Spalten unterschiedliche einträge und ist eine 1x4096 Matrix.
Bei meinem Prof gibt es die mat files distance_Part1, distance_Part2 usw. Dabei hat der erste Part zb. 10000 verschiedene Einträge und ist eine 1x10000 Matrix. Der zweite Part hat 20000 Einträge allerdings sind die ersten 10000 = 0.

wie lade ich jetzt die dateien, sodass ich im Workspace die Variable distance habe mit allen 20000 einträgen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.11.2022, 16:21     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ich habe es jetzt selbst hinbekommen mit der Funktion find( Bedingung A & Bedingung B usw.) und es funktioniert auch soweit alles so wie es soll.

Das ist unnötig kompliziert, aber Hauptsache es funktioniert.

Wie heißen denn die Variablen, die in diesen .mat-Dateien drin sind?
Wieviele solcher .mat-Dateien sind es?
Am einfachsten ist es immer, wenn du Beispiele anhängst.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Akinh0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2022, 20:22     Titel:
  Antworten mit Zitat      
Also ich habe insgesamt 6 Variablen und jede Variable ist in 6 Parts unterteilt.

Z. B. heißt eine Variable: data_dist_list_2_Part1_DATUM und die nächste heißt dann halt data_dist_list_2_Part2_DATUM und das geht halt bis Part6 und das Datum ist immer gleich. Alle 6 Parts zusammen haben nur eine Variable die distance_list heist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.11.2022, 22:30     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt: es wäre gut, wenn du ein Beispiel postest.
Auch wenn es nun etwas klarer ist, stellt sich die Frage:
Zitat:
Der zweite Part hat 20000 Einträge allerdings sind die ersten 10000 = 0.

Hat der dritte Part dann 30000 Einträge und die ersten 20000 sind 0?!

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Akinh0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2022, 23:35     Titel:
  Antworten mit Zitat      
Ja genau und das geht so weiter sodass der letzte part quasi 60000 einträge hat wobei die ersten 50000 = 0 sind.

Edit: Ich sehe jetzt gerade, dass nicht alle Parts gleich groß sind also part1 hat 88574 Einträge, Part 2 = 177178, Part 3 = 265722, Part 4 = 354296, Part 5 = 442870 und Part 6 = 531441

Alos nochmal zum Verständnis: Part2 hätte jetzt 88574 mal die 0 und dann weitere Einträge bis 177178 die ungleich 0 sind und Part 3 hat dann 177178 mal die 0 und dann bis 265722 wieder Einträge die ungleich 0 sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
Akinh0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2022, 00:42     Titel:
  Antworten mit Zitat      
Alos ich habe das jetzt so gelöst:

Code:

clear all
close all
clc
%% loading data
u1 = load('data_distance_list_3_part1_01-Sep-2022.mat');
u2 = load('data_distance_list_3_part2_01-Sep-2022.matt');
u3 = load('data_distance_list_3_part3_01-Sep-2022.mat');
u4 = load('data_distance_list_3_part4_01-Sep-2022.mat');
u5 = load('data_distance_list_3_part5_01-Sep-2022.mat');
u6 = load('data_distance_list_3_part6_01-Sep-2022.mat');

x = [u1.distance_list u2.distance_list u3.distance_list u4.distance_list u5.distance_list u6.distance_list];
y = x(x~=0);
 


Das ganze funktioniert auch nur, weil die einzelnen Parts eigentlich keine 0 einträge haben sollten, weil es nur annäherungen sind also alle Variablen haben bei dem experiment keine 0 Einträge. Diese sind nur entstanden weil die Variablen auf mehrere Parts aufgeteilt wurden.


vlt hast du ja noch eine andere Idee wie es vlt einfache geht.

Gruß
Akin
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.11.2022, 09:50     Titel:
  Antworten mit Zitat      
Hallo,

hänge doch bitte Beispiel .mat-Dateien an! Ggf. gezippt.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Akinh0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 29.06.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2022, 22:14     Titel:
  Antworten mit Zitat      
Ok hab im Anhang eine Variable mal angehangen.

dist_list.rar
 Beschreibung:

Download
 Dateiname:  dist_list.rar
 Dateigröße:  467.4 KB
 Heruntergeladen:  95 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.11.2022, 22:31     Titel:
  Antworten mit Zitat      
Hallo,

für dieses Beispiel liefert das dieselben Werte wie dein Ansatz, ist aber flexibler und löscht auch nicht Nullen mitten im Datensatz.
Code:
y2 = [];
list = dir("data_dist_list_3_*_09-Sep-2022.mat");
for k =1:numel(list)
    u = load(list(k).name);
    firstNonZero = find(u.distance_list ~= 0, 1);
    y2 = [y2, u.distance_list(firstNonZero:end)];
end


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.