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

wie erzeuge ich eine matrix mit wiederholender zahlenfolge

 

xwinnipuhx
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 12:26     Titel: wie erzeuge ich eine matrix mit wiederholender zahlenfolge
  Antworten mit Zitat      
Hallo ich grübel schon eine weile an meinem problem und ich bin mir sicher das es eigentlich ganzz einfach ist.

also ich möchte eine 20x20 matrix erzeugen und es soll sich die folge 0 1 2 1 0 immer wieder in jeder zeile wiederholen.

für eine zeile bekomm ich das hin:

Code:

folge = [ 0 1 2 1 0]
ZeilenVektor = repmat(folge,1,4)
% ergibt 4x 0 1 2 1 0
 


aber wie mach ich das jetzt in der nächsten zeile, so dass eine matrix mit 20 zeilen entsteht?

ich freue mich über jede antwort
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.03.2012, 12:37     Titel:
  Antworten mit Zitat      
Hallo

meinst du so:
Code:


folge = [ 0 1 2 1 0]
ZeilenVektor = repmat(folge,20,4)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 13:40     Titel:
  Antworten mit Zitat      
ja genau Smile
danke


ich hab allerdings noch ein problem:
die so erzeugte matrix soll als raster dienen, welches ich über eine andere Bildmatrix lege (hinzuaddiere) das andere bild ist auch 20x20 und möchte gern die raster matrix über die bildmatrix bewegen, es sollen somit 10-15 neue bildmatrixen entstehen.

meine idee war das mit einer schleife zu lösen doch leider klappt das nicht.
Code:

img = imread("bild") %20x20
M = [0 1 2 1 0]
Matrix = repmat(M,20,4)

% die erste neue matrix
C = img.+Matrix;

% nun soll die Matrix jedesmal um 1 nach rechts verschoben werden
% es sollen zb 10 neue bildmatrixen entstehen

for i = 1:10
     for j = 1:10
     C = img.+Matrix(i+1,j+1)
     end
end
 


klappt leider nicht so wie geplant.
es entsteht dabei ein überlauf über die Matrixgrenzen, weiß nicht wie ich das vermeiden kann
und die addition klappt leider auch nicht richtig
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.03.2012, 13:55     Titel:
  Antworten mit Zitat      
Code:
img = imread("bild") %20x20
img=ones(20);M = [0 1 2 1 0] ;
Matrix = repmat(M,20,4) ;

% die erste neue matrix
C=cell(1,11);
C{1} = img+Matrix;
for k = 1:10    
     C{k+1} = img+[zeros(size(img,2),k),Matrix(:,1:end-k)];
end

sowas?
p.s. i und j sollten nicht als schleifen variablen verwended werden da sie eigentlich für die imaginäre einheit benutzt werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 14:28     Titel:
  Antworten mit Zitat      
danke das sieht schon mal gut aus.
kannst du mir dein code bitte noch etwas erklären/kommentieren?
besondern den in der schleife

da ich wirklich jedes element der einen matrix mit dem der anderen verrechnen möchte muss ich doch den punktoperator verwenden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.03.2012, 14:33     Titel:
  Antworten mit Zitat      
nunja aber addition ist ja schon elementweise. genau wie subtraktion. matrixmultiplikation ist hingegen anders definiert.
unten in der schleife erzeuge ich einfach eine matrix aus k nullen und dann den rest von deiner anderen matrix. zusammen haben beide wieder die dimension des bildes.
Private Nachricht senden Benutzer-Profile anzeigen
 
xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 14:52     Titel:
  Antworten mit Zitat      
sorry wenn meine fragen etwas blöd sind Smile
wofür steht die 2? -> dort wo du die matrix aus nullen mit der gleichen dimension erzeugst?

und kannst du mir das noch ausführlicher (also für "dumme" erklären)
-> Matrix(:,1:end-k)

vielen dank hast mir echt sehr geholfen
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.03.2012, 15:05     Titel:
  Antworten mit Zitat      
hmm da du ja im octav forum bist und ich mich damit nicht auskenne gehe mal davon aus das es dort keine gute doc giebt. sonst könnte man das aja einfach nachlesen.
Code:
hat als rückgabe wert die länge der 2. dimension. das ist ein fehler von mir und sollte eigentlich
Code:
sein, was aber keinen unterschied hir macht da die dimensionen ja gleich sind.
Code:
Matrix(:,1:end-k)
ist eine matrix mit allen zeilen und den spalten von 1 bis end-k. end-k deshalb weil wir ja eine nullmatirx mit der dimension 20xk vorne ran klatschen.
Private Nachricht senden Benutzer-Profile anzeigen
 
xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2012, 15:32     Titel:
  Antworten mit Zitat      
danke dir Very Happy
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.