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

Indexing

 

David85
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.02.11
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 19.02.2011, 15:41     Titel: Indexing
  Antworten mit Zitat      
Hallo!

Ich habe ein Problem, dessen Lösung bestimmt einfach ist. Aber ich komme einfach nicht drauf.
Ich habe die Matrix A und möchte die Matrix B wie im Beispiel erhalten. Wie kann man das mit Hilfe von Idexing erreichen?

A = [1 45 96 5; 2 55 62 5 ; 4 63 78 2];
B = [1 45 96 5; 2 55 62 5; 3 0 0 0; 4 63 78 2; 5 0 0 0];

Vielen Dank schonmal.

Grüße

David
Private Nachricht senden Benutzer-Profile anzeigen


operator0807
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2011, 15:53     Titel:
  Antworten mit Zitat      
so sollte es funktionieren

Code:

A = [1 45 96 5; 2 55 62 5 ; 4 63 78 2];
N = 2; % Zeilenindex der einzufügenden Zeile
v = [3 0 0 0]; % einzufügende Zeile
B = [A(1:N,:); v; A(N+1:end,:)];
 
Private Nachricht senden Benutzer-Profile anzeigen
 
David85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.02.11
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 19.02.2011, 16:05     Titel:
  Antworten mit Zitat      
Danke für deine schnelle Antwort.
Das Problem dabei ist, dass die Matrix wesentlich größer ist und die Matrix bei jeder Berechnung stets neu aussieht. Das kann ich nicht mehr manuell machen.
Wie kann das anders lösen?

Vielen Dank.

David
Private Nachricht senden Benutzer-Profile anzeigen
 
operator0807
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2011, 16:10     Titel:
  Antworten mit Zitat      
wie definierst du denn die zeile, an der die werte eingefügt werden müssen??

soll das immer nach einem bestimmten wert sein, oder immer in einer bestimmtn zeile ?
Private Nachricht senden Benutzer-Profile anzeigen
 
David85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.02.11
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 19.02.2011, 16:23     Titel:
  Antworten mit Zitat      
Hallo operator0807,

Ich habe eine Exceltabelle, die von einem anderem Programm beschrieben wird. Diese Tabelle soll Matlab einlesen. In der ersten Spalte stehen die Nummern von Anlagen und in der Matrix dahinter die Leistungswerte je Zeitpunkt.
Jetzt kann von den 8 Anlagen die Nummer 1 überhaupt nicht in Betrieb sein. Dann fehlt die 1 in der Tabelle.
Für meine weiteren Berechnungen muss dort aber eine 1 stehen und dann in der Zeile nur noch Nullen.
Die anderen Maschinen z.B. 2 sollen aber ihre Zeilenwerte wie in der Tabelle behalten.
Ich habe mal probiert: B(A(:,1)1) = B(:,2:end);
Das klappt aber nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
operator0807
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2011, 17:10     Titel:
  Antworten mit Zitat      
dann sollte es so gehen
Code:

anz_anl_soll=7; %anzahl aller anlagen
A = [1 45 96 5; 2 55 62 5 ; 4 63 78 2; 6 63 78 2];%messerte
[x,laenge]=size(A);

% falls die letzte anlage fehlt, muss noch 1 addiert werden
letzte=max(A(:,1))<anz_anl_soll;

%überprüfen, welche anlagen fehlen
anl_vorh=[A(:,1);max(A(:,1))+1+letzte];
fehlt=(diff(anl_vorh)>1).*A(:,1);
fehlt(fehlt==0)=[];
fehlt=fehlt+1;


%erstellen des einfügarrays mit 0en + der anlagennummer an erster stelle
anz=length(fehlt);
einfueg=zeros(anz,laenge);
einfueg(:,1)=fehlt;

%fehlende Stellen anfügen
A=[A;einfueg];

%array sortieren
A=sortrows(A);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
David85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.02.11
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 19.02.2011, 17:19     Titel:
  Antworten mit Zitat      
Super! Das klappt wunderbar.

Danke dir.

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