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

Matrix erstellen aus Cell Array

 

fubse
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.11.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 16:53     Titel: Matrix erstellen aus Cell Array
  Antworten mit Zitat      
Hallo zusammen,
mein Problem klingt eigentlich relativ einfach (ist es wahrscheinlich auch), ich bekomme es aber leider nicht selber hin:

Ich habe ein 25x1 Cell Array, also einen Spaltenvektor bzw. eine Liste mit 25 Begriffen. Diese möchte ich nun transponieren und aus beiden eine Matrix erstellen. Ich weiß nicht ob das verständlich ist, deshalb mache ich ein einfaches Beispiel wie das am Ende aussehen soll:

------------Motor----Getriebe----Karosserie----Bremsen----....
Motor
Getriebe
Karosserie
Bremsen
Räder
....

Der Grund ist, dass ich in die Matrix Wechselwirkungen zwischen den einzelnen Bauteilen eintragen möchte. Da sich diese Liste für unterschiedliche Fahrzeuge ändert, möchte ich das nicht jedes Mal von Hand machen.

Hat jemand eine Idee wie ich das umsetzen kann? Wie ich transponiere ist mir bekannt. Mir geht es um das Erstellen einer gemeinsamen Matrix aus einem Spalten und einem Zeilen Vektor. Hab schon sämtliche cell2mat funktionen und ähnliches propiert....

Vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 16:59     Titel:
  Antworten mit Zitat      
Hallo,

was meinst du mit "beide"?

Zitat:
Diese möchte ich nun transponieren und aus beiden eine Matrix erstellen.


Eine Matrix ist mit strings unterschiedlicher Länge nicht möglich. Das geht nur mit einer cell Matrix.
Private Nachricht senden Benutzer-Profile anzeigen
 
fubse
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.11.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 17:10     Titel:
  Antworten mit Zitat      
Ok das ist schon mal eine wichtige Information die mir nicht bekannt war, vielen dank.
Mit "beide" mein ich dass der Spaltenvektor die erste Spalte der Matrix bilden soll und der transponierte Zeilenvektor die erste Zeile. Ist das verständlich? Eine Cell Matrix wäre für mich auch ok...
Private Nachricht senden Benutzer-Profile anzeigen
 
fubse
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.11.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 17:14     Titel:
  Antworten mit Zitat      
Ich habe folgendes Versucht:

>>C={[0], [B]; [A], zeros(25)}

Dann bekam ich das zurück (genau so soll die Matrix anschließend aussehen):

C =

[ 0] { 1x25 cell }
{25x1 cell} [25x25 double]

Wenn ich dann mit cell2mat versuche daraus eine Matrix zu machen bekomme ich den untenstehenden Fehler, der genau das bestätigt was du bereits gesagt hattest.

>>D=cell2mat(C)

Error using cell2mat (line 45)
All contents of the input cell array must be of the same data type.

Die Frage ist jetzt nur wie ich das umgehen kann? Wie kann ich einfach daraus eine Cell Matrix machen?
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 17:44     Titel:
  Antworten mit Zitat      
Meinst du so etwas?

Code:
c ={' ','x','y','z' ; 'i',0,0,0; 'j',0,0,0; 'k',0,0,0;}

c =

    ' '    'x'    'y'    'z'
    'i'    [0]    [0]    [0]
    'j'    [0]    [0]    [0]
    'k'    [0]    [0]    [0]
 


Evtl. ist ja auch eine Tabelle für dich das Richtige.

Code:

% Define workspace variables with the same number of rows.

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
% Create a table, T, as a container for the workspace variables.

T = table(Age,Height,Weight,BloodPressure,...
    'RowNames',LastName)
T =

                Age    Height    Weight     BloodPressure
                ___    ______    ______    _______________

    Smith       38     71        176       124          93
    Johnson     43     69        163       109          77
    Williams    38     64        131       125          83
    Jones       40     67        133       117          75
    Brown       49     64        119       122          80
 
Private Nachricht senden Benutzer-Profile anzeigen
 
fubse
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.11.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 17:51     Titel:
  Antworten mit Zitat      
Ja genau so soll das am Ende aussehen, nur dass bei mir grundsätzlich gilt:

i = x
j = y
k = z

da es sich bei der obersten Zeile um die transponierte erste Spalte handelt. Und in diesem Cell - Vektor (wenn man das so nennt) sind eben schon alle Begriffe aufgelistet, deren Wechselwirkung ich anschließend untersuchen will.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 20:50     Titel:
  Antworten mit Zitat      
Evtl geht es auch ohne Schleife, aber das hier wäre zumindest ein Lösungansatz:

Code:

cellMatrix = num2cell(zeros(5,5));
cellMatrix{1,1} = '';
names = {'Name1','Name2','Name3','Name4'};

for i=2:length(cellMatrix)
    cellMatrix{1,i} = names{i-1};
    cellMatrix{i,1} = names{i-1};
end

cellMatrix =

    ''         'Name1'    'Name2'    'Name3'    'Name4'
    'Name1'    [    0]    [    0]    [    0]    [    0]
    'Name2'    [    0]    [    0]    [    0]    [    0]
    'Name3'    [    0]    [    0]    [    0]    [    0]
    'Name4'    [    0]    [    0]    [    0]    [    0]
 
Private Nachricht senden Benutzer-Profile anzeigen
 
fubse
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.11.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.01.2016, 22:31     Titel:
  Antworten mit Zitat      
Perfekt genau das habe ich gebraucht! Vielen Dank du hast mir meinen Sonntag gerettet!
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.