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

Nullzeile wiederholt einfügen

 

90Ww35
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 13:29     Titel: Nullzeile wiederholt einfügen
  Antworten mit Zitat      
Ich möchte bei einer gegebenen Spalte mit den Zahlen [0; 10; 20; 30; ....; 100] bei jedem 2. Wert eine 0 einfügen [0;10;0;20;0;30; ...; 100].

(Meine Spalten sind eigentlich wesentlich größer, aber dieses Beispiel dient zur Anschauung).

Wie kann ich dies am Geschicktesten anstellen?
Aus dem Forum habe ich von einer ähnlichen Frage die Antwort etwas abgewandelt, aber ich erhalte noch nicht das richtige Ergebnis.

Code:
A=[0:10:100]'

a= zeros(1,1);

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


Danke!
Julia
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: 02.07.2013, 13:38     Titel:
  Antworten mit Zitat      
Code:
könnte helfen falls die toolbox vorhanden ist.
p.s.
kleine anmerkung. bitte die codeumgebung verwenden wenn du code postest. macht es viel einfacher zu lesen.
edit.
ok wurde editiert.
edit 2
Code:
clear
A=[0:10:100]';
B=zeros(size(A,1)*2-2,1);
B(2:2:end)=A(2:end);

wäre auch eine lösung.
waren die anderen schneller aber bei jan war noch was mit den elemten falsch

Zuletzt bearbeitet von Winkow am 02.07.2013, 13:48, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2013, 13:43     Titel: Re: Nullzeile wiederholt einfügen
  Antworten mit Zitat      
Hallo Julia,

Code:
A = (0:10:100)';   % Rund Klammern reichen hier aus
B = zeros(200, 1);  % Dies kann man weglassen, falls B garantiert nicht existiert BUG!
B(2:2:200) = A;

Solche kompakten Methoden sind der Charm von Matlab. Man kann einfach viel weniger Tippfehler und Bugs in einen so kurzen Code einfügen.

Gruß, Jan

[EDITED] Der Fehler hier ist, dass A nicht die Länge 100 hat!

Zuletzt bearbeitet von Jan S am 02.07.2013, 14:26, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 02.07.2013, 13:43     Titel:
  Antworten mit Zitat      
Hi Julia,

weiß jetzt nicht, ob das optimal ist, aber vllt. hilft es dir:

Code:

A=[0:10:100];
B=zeros(length(A)*2,1)';
B(2:2:end)=A;
 


Gruß, Kascho

Zuletzt bearbeitet von Kascho am 02.07.2013, 13:44, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
90Ww35
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 02.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 13:44     Titel:
  Antworten mit Zitat      
Jepp! Danke euch!!!

Zusammenfassung der Ergebnisse.
Also die kürzeste Lösung ist:

Code:

A=(0:10:100)'
y=upsample(A,2);
 


Cool, hätte nie gedacht, dass das so einfach ist.

@ Jan:

Dein Code funktioniert nicht. Ich erhalte die Fehlermeldung:

In an assignment A(I)=B, the number of elements in B and I must be the same.

Der vom Forum-Meister vorgeschlagene Code

Code:

clear
A=[0:10:100]';
B=zeros(size(A,1)*2-2,1);
B(2:2:end)=A(2:end);
 


passt hingegen.

@ Kaschko:
Code:

A=[0:10:100];
B=zeros(length(A)*2,1);
B(2:2:end)=A;
 


funktioniert. In der 2. Zeile habe ich das Symbol ' zum Transponieren weggenommen. Und am Ende habe ich zwei zusätzliche Nullzeilen am Anfang, aber die kriege ich "manuell" eliminiert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2013, 14:30     Titel:
  Antworten mit Zitat      
Hallo Julia,

Die Methoden von Kascho und Winkow ergeben unterschiedliche Ergebnisse, weil die Frage eine Ungenauigkeit hat:
"bei jedem 2. Wert eine 0 einfügen" und "[0;10;0;20;0;30" passen nicht zusammen, weil die zweite Spalte nicht mit "0" beginnt.

Ja mein Programm ging irrtümlich davon aus, dass "0:10:100" 100 Elemente hat, was natürlich grob daneben liegt.

Gruß, Jan
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 - 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.