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

Zeile in Matrix einfügen

 

Helmut

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 11:17     Titel: Zeile in Matrix einfügen
  Antworten mit Zitat      
Hallo ihr Lieben,

ich habe mir mit Matlab eine 1728x3 Matrix erzeugt. Jetzt möchte ich nach jeder 144. Zeile noch eine zusätzliche zeile einfügen. Kann mir jemand erklären wie das funktioniert, ohne dass ich eine Zeile überschreiben muss?

lg Helmut


steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 11:49     Titel:
  Antworten mit Zitat      
Hallo,

ich weiss nicht ob das die rechnerisch effizienteste Lösung ist, aber ungefähr so sollte es funktionieren

Code:
A=zeros(1000,3);
a=ones(1,3);

for i=100:100:length(A)
    temp=A(i:end,:);
    A(i,:)=a;
    A=[A(1:i,:);temp]
end


musst du noch auf deine Anwendung anpassen und eben korrigieren, hab gerade kein MATLAB zur Verfügung Wink
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 14:03     Titel:
  Antworten mit Zitat      
Hallo,

Code:
A = rand(1728,3); % Matrix
N = 144; % Zeilenindex
v = [34 12 99]; % einzufügende Zeile
B = [A(1:N,:); v; A(N+1:end,:)];


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 14:26     Titel:
  Antworten mit Zitat      
Hallo dib0r,

so wie ich die Frage von helmut verstanden hatte, sollte nach jeder 144. Zeile eine neue Zeile eingefügt werden. Wie würde denn dafür deine Lösung aussehen?

Gruß
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 15:05     Titel:
  Antworten mit Zitat      
Hallo,

tja, wer lesen kann ...

Ich weiss nicht ob deine Lösung funktioniert, da ja die Matrix A in der Schleife wächst, die Indizes in der Schleife aber nicht angepasst werden. Ich hätte eher eine Index-Liste erstellt, mir fällt da aber spontan auch nichts ohne Schleife ein.
Code:
A = rand(1728,3);
N = 144;
v = rand(floor(size(A,1)/N),3);
idx_list = [];
for i=N:N:size(A,1)
  idx_list = [idx_list; [i-N+1:i]'; i];
end
A_neu = A(idx_list,:);
A_neu(N+1:N+1:size(A_neu,1),:) = v;


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 15:26     Titel:
  Antworten mit Zitat      
Du hast Recht was das Mitwachsen bei mir angeht... Jetzt frag ich mich warum das Ergebnis ganz brauchbar ausschaut... (hab mal einen Vektor Länge 100 in 10er Schritten gefüllt und anschließend geplottet)?!

Ein Problem ergibt sich bei mir, wenn mehr Zeilen eingefügt werden, als die Schrittweite ist, dann läuft zwar der Code weiterhin durch, aber es werden keine Zeilen mehr eingefügt.

Wird anschaulich duetlich, wenn man bei Länge 100 in 7er Schritten einfüllt...

*so viel Denkarbeit an einem Montag* Embarassed
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 16:40     Titel:
  Antworten mit Zitat      
steffi hat Folgendes geschrieben:
Ein Problem ergibt sich bei mir, wenn mehr Zeilen eingefügt werden, als die Schrittweite ist, dann läuft zwar der Code weiterhin durch, aber es werden keine Zeilen mehr eingefügt.


Ich glaub das Problem tritt bei mir auch auf.
Code:
A = rand(1728,3); % Matrix
N = 144; % Zeilenanzahl
v = rand(floor(size(A,1)/N),3); % einzufügende Matrix
idx_list = [];
for i=N:N:size(A,1)
  idx_list = [idx_list; [i-N+1:i]'; i];
end
idx_list = [idx_list; [i+1:size(A,1)]']; % Übrige Zeilen hinzufügen
A_neu = A(idx_list,:);
A_neu(N+1:N+1:size(A_neu,1),:) = v;


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Dirk921

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2009, 08:41     Titel:
  Antworten mit Zitat      
Hallo Zusammen,

hab grade den Thread über Google gefunden und dachte ich antworte auch wenn es spät ist. Wink
Das liegt daran, dass die Argumente in der for-Schleife nicht verändert werden. Das size(A, 1) wächst nicht mit. Sowas mache ich immer über while Schleifen, dort ist die Abbruchbedingung dynamisch. Allerdings muss man halt innerhalb der Schleife per Hand hochzählen.

Grüße
Dirk
 
konkret

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2010, 15:59     Titel:
  Antworten mit Zitat      
Wow, das ging ja schnell.

Danke, hat jetzt endlich geklappt.

konkret
 
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 - 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.