Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Ereignisdiskrete Systeme

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrixzeilen aneinanderreihen

 

Philipp68
Forum-Century

Forum-Century


Beiträge: 135
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 27.02.2020, 14:42     Titel: Matrixzeilen aneinanderreihen
  Antworten mit Zitat      
Hallo,
ich möchte gerne in einer Schleife meine Matrix zu einem langen Spaltenvektor umformen. Hänge jedoch bei der Umsetzung ein bisschen auf dem Schlauch.

Als kurzes Beispiel:

Code:

a = (1,2,3,4)';
b = (5,6,7,8)';

c = [a;b]; % c = (1,2,3,4,5,6,7,Cool';
 


In meinem Fall will ich eine 1920x1080 Matrix umformen.
Die erste Zeile bleibt und an dieser will ich jede Zeile 2:1080 anhängen. Somit erhalte ich am Ende einen Zeilenvektor, der 2.073.600 Werte lang ist.

Zu meinem Code:

Code:

pic1 = imread('Testbild3.png');
if size(pic1,3) == 3
    pic1 = rgb2gray(pic1);
end

[numRows,numCols] = size(pic1);

if numCols == 1080 && rumRows == 1920
    pic1 = pic1';
end

for i = 1:numRows
    UserArray = pic1[i,:, .....]; % Hier hängt es.
end

 


Danke für eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 21.145
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.02.2020, 15:15     Titel:
  Antworten mit Zitat      
Hallo,

soll es nun ein Spaltenvektor (anfangs) oder ein Zeilenvektor (gegen Ende des Texts) werden?

So oder so, reshape hilft:
Code:
UserArray = reshape(pic1', 1, [])

oder
Code:
UserArray = reshape(pic1', [], 1)


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
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 135
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 27.02.2020, 15:27     Titel:
  Antworten mit Zitat      
Vielen Dank, das klappt super! : )
Am Ende soll ein Zeilenvektor herauskommen, also Bild+Bild+Bild-....

Code:

[file,~,~] = uigetfile('*.png','MultiSelect', 'on');

[~, y] = size(file);


for i = 1:y
       
        Bild = imread(file{:,i});
       
       
        if size(Bild,3) == 3
        Bild = rgb2gray(Bild);
        end
       
        [numRos, numCols] = size(Bild);
        if numCols == 1920 && numRos == 1080
        Bild = Bild';
        end
       
        Bild = reshape(Bild, 1, []);
       
        UserArray = % Neuer Zeilenvektor bestehend aus ausgewählten Bildern
       
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Initialisierung vor der for-Schleife:
Code:
UserArray = [];


In der Schleife:
Code:
UserArray = [UserArray, Bild]


Alternativ: Bilder in einem Cell Array sammeln und am Ende cell2mat

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
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 135
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 27.02.2020, 16:52     Titel:
  Antworten mit Zitat      
Danke Harald! Mir war das bisher so nicht bekannt.
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2020 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.