Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Mathcad
  Zeile/Spalte aus einer Matrix löschen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo
Autor Thema:  Zeile/Spalte aus einer Matrix löschen (11744 mal gelesen)
Tusor
Mitglied



Sehen Sie sich das Profil von Tusor an!   Senden Sie eine Private Message an Tusor  Schreiben Sie einen Gästebucheintrag für Tusor

Beiträge: 47
Registriert: 31.10.2004

erstellt am: 18. Mai. 2007 09:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich stehe gerade vor dem Problem, dass ich innerhalb einer MathCAD-Funktion gern eine Zeile und Spalte aus einer Matrix löschen will. Es geht darum, dass ich erst eine Matrix aufstelle, die alle meine Werte enthält. An Hand der Matrix kann ich dann prüfen, welche Zeilen/Spalten ich nicht mehr brauche und will die wieder rauslöschen. Das einzigste was mir einfällt ist, dass ich die verbleibenden Werte aus meiner Ausgangsmatrix in einer entsprechend kleinere kopiere und dabei die ungewünschten auslasse. Diese Möglichkeit finde ich aber nicht sonderlich elegant. Hat da jemand evtl. noch eine clevere Idee?

mfg

Tusor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 18. Mai. 2007 09:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich

im Matrix-Einfügedialog gibts auch ein Button "Löschen" .. da löscht er dir dann die Zeilen/Spaltenanzahl ab aktueller Cursorposition

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Oberli Mike
Moderator
Dipl. Maschinen Ing.




Sehen Sie sich das Profil von Oberli Mike an!   Senden Sie eine Private Message an Oberli Mike  Schreiben Sie einen Gästebucheintrag für Oberli Mike

Beiträge: 3731
Registriert: 29.09.2004

Mathcad war besser als Prime, meine Meinung.

erstellt am: 18. Mai. 2007 09:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich


20071518_matrixredution.mcd.txt

 
Hallo Tusor,

Die manuelle Art hat Thomas beschrieben.

Natürlich kann man das auch rechnerisch erreichen. Dafür muss man sich
nur ein wenig mit den Matrixoperationen beschäftigen.

Im angehängten File (gespeichert unter Version 11) ist ein Programm,
welches auch im Thread Beispiele für Berechnungen im Beispiel der Fachwerksberechnung zu finden ist.

Diese Programm baut eine Einheitsmatrix auf, bei welcher vorgegebene
Spalten fehlen. Durch eine Matrixmultiplikation lassen sich dann die gewünschten Spalten oder Zeilen einer Vorgegebenen Matrix entfernen.

Dasa Programm wurde geschrieben um eine Steifigkeitsmatrix für eine FEM - Berechnung um die gebundenen Freiheitsgrade zu reduzieren. Somit
ist immer einer n*n Matrix vorgegeben. Das Programm kann aber auch für
eine n*m Matrix angewendet werden, man muss sich nur überlegen wir gross die Einheitsmatrix sein muss 

Programm mit freundlicher Genehmigung von Prof. Ing. Karl Schöllhorn
von der FH Nordwestschweiz in Windisch-

Gruss
Mike

------------------

The Power Of Dreams Schreib mal wieder

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tusor
Mitglied



Sehen Sie sich das Profil von Tusor an!   Senden Sie eine Private Message an Tusor  Schreiben Sie einen Gästebucheintrag für Tusor

Beiträge: 47
Registriert: 31.10.2004

erstellt am: 18. Mai. 2007 13:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Die Idee mit der Matrixmultiplikation ist genial! Vielen Dank. Man sollte sich doch viel öfter Gedanken über die Möglichkeiten machen, die einem die Mathematik bietet.

mfg

Tusor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Smucums
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Smucums an!   Senden Sie eine Private Message an Smucums  Schreiben Sie einen Gästebucheintrag für Smucums

Beiträge: 38
Registriert: 24.06.2002

Creo Paramtric 4.0 M030
Windchill 11.0 M030
MathCAD 15 F000

erstellt am: 09. Nov. 2010 08:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich


Matrix_NaN.bmp.txt

 
Hallo Community,

zum Thema Zeilen- bzw. Spalten löschen aus eine Matrix sind hier im Forum einige gute Beispiele zu finden. Ich stehe in meinem Fall vor dem Problem, dass ich aus Messungen heraus eine Matrix mit Fehlstellen ("NaN") erhalten habe, siehe Anhang. Nun gilt es, einen Vektor aufzubauen, der genau die Zeilenindizes enthält, auf dem "NaN" vorkommt. Hat hierzu jemand einen Vorschlag, wie man das realisieren könnte?

MfG Smucums

------------------
„Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen.“
Edward A. Murphy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tusor
Mitglied



Sehen Sie sich das Profil von Tusor an!   Senden Sie eine Private Message an Tusor  Schreiben Sie einen Gästebucheintrag für Tusor

Beiträge: 47
Registriert: 31.10.2004

erstellt am: 09. Nov. 2010 08:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi, ich muss zugeben, dass ich mittlerweile von MathCAD zu MATLAB gewechselt bin. Dort kann man das schön mit isnan() prüfen  . Aber vielleicht gibt es ja eine ähnliche Funktion auch bei MathCAD. Oder man prüft die Elemente in einer Schleife einzeln und baut sich den Vektor selbst. Treten die NaN nur in der zweiten Spalte auf?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Smucums
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Smucums an!   Senden Sie eine Private Message an Smucums  Schreiben Sie einen Gästebucheintrag für Smucums

Beiträge: 38
Registriert: 24.06.2002

Creo Paramtric 4.0 M030
Windchill 11.0 M030
MathCAD 15 F000

erstellt am: 09. Nov. 2010 09:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich

Hallo Tusor,

in diesem Falle ja, weil ich die Matrizen immer nach der ersten Spalte sortiere (Lage der Messpunkte). Auch im MathCAD gibt es einen Befehl (IsNaN), der entweder 0 oder 1 ausgibt. Aber irgendwie ist hier der missing link ( ) - wie gehts damit weiter?

MfG Smucums

------------------
„Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen.“
Edward A. Murphy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tusor
Mitglied



Sehen Sie sich das Profil von Tusor an!   Senden Sie eine Private Message an Tusor  Schreiben Sie einen Gästebucheintrag für Tusor

Beiträge: 47
Registriert: 31.10.2004

erstellt am: 09. Nov. 2010 09:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Naja, wie es damit weiter geht, kann ich dir leider nicht sagen, weil ich kein MathCAD zur Hand habe. Kann man den Befehl nur auf ein Skalar oder auch auf eine Matrix anwenden? Was ist das Ergebnis? In MATLAB gibt es auch noch einen find-Befehl, der die Indizes von Elementen zurückgibt, die verschieden von Null sind bzw. andere Kriterien erfüllen. Gibt es das vielleicht auch in MatCAD?
Mit isnan könnte man halt auch die Schleifengeschichte programmieren: Du schaust dir jedes Element an und speicherst seinen Index in einer Liste, wenn er halt NaN ist. Und die gibst du dann wieder aus.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Clayton
Ehrenmitglied
Konstrukteur


Sehen Sie sich das Profil von Clayton an!   Senden Sie eine Private Message an Clayton  Schreiben Sie einen Gästebucheintrag für Clayton

Beiträge: 1632
Registriert: 07.02.2004

AMD Athlon 64X2 5600+, 1GB, Nvidia Quadro Pro FX 1100
Inventor Series 10
Mathcad 13

erstellt am: 09. Nov. 2010 13:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Smucums:
in diesem Falle ja, weil ich die Matrizen immer nach der ersten Spalte sortiere (Lage der Messpunkte). Auch im MathCAD gibt es einen Befehl (IsNaN), der entweder 0 oder 1 ausgibt. Aber irgendwie ist hier der missing link (  nosmile: - wie gehts damit weiter?

Hi,
Wenn Du die Dinger suchen willst, kann man auch z.B. Index:=matchNaN(M) verwenden und, nachdem man entschieden hat, ob man die Werte ganz loescht oder sie z.B. mit dem Durchschnitt der Daten auswechselt, weiter machen.
Nur weiss ich nicht, ob man dazu das Data Analysis Extension Pack braucht.
Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Smucums
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Smucums an!   Senden Sie eine Private Message an Smucums  Schreiben Sie einen Gästebucheintrag für Smucums

Beiträge: 38
Registriert: 24.06.2002

erstellt am: 09. Nov. 2010 13:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich

Hallo Clayton,

danke für die Antwort - es entwickelt sich langsam ein Dialog
Nun, matchNaN ist genau dass, was mir noch fehlte. Ich will mit den verbleibenden Messstellen auch hier wieder eine Regressionsrechnung durchführen. Ich bin mir (fast) sicher, dass ich dafür die NaN-Stellen nicht notwendigerweise entfernen muss. Jedoch verwirrt derren Angabe in den Matrizen, so dass ich diese lieber entfernt haben möchte. Also "bastel" ich mir eine entsprechende Matrix und multipliziere sie transponiert von links. Dann sollte eine bereinigte Matrix ohne die NaN-Zeilen als Ergebnis herauskommen. Da muss ich jetzt weitermachen...

BTWBy the way (So nebenbei bemerkt) - wir nutzen hier die Version 15, wo das Data Analysis Extension Pack standardmäßig dabei ist.

MfG Smucums

------------------
„Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen.“
Edward A. Murphy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Clayton
Ehrenmitglied
Konstrukteur


Sehen Sie sich das Profil von Clayton an!   Senden Sie eine Private Message an Clayton  Schreiben Sie einen Gästebucheintrag für Clayton

Beiträge: 1632
Registriert: 07.02.2004

AMD Athlon 64X2 5600+, 1GB, Nvidia Quadro Pro FX 1100
Inventor Series 10
Mathcad 13

erstellt am: 09. Nov. 2010 15:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich


Replace_NaN.jpg

 
Hi,
Du kannst natuerlich auch IsNaN verwenden -->
Ich habe in diesem Fall die offenen Positionen mit dem Durchschnitt der verbliebenen ersetzt, vielleicht ist es das, was Du suchst. Aber bleibt Dir ueberlassen.
Gruss

[Diese Nachricht wurde von Clayton am 09. Nov. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Anwendungstechniker (m/w/d)

Die Firma abopart ist einer der führenden Hersteller von mobilen Trennwänden in Deutschland. Sie beschäftigt ca. 80 Mitarbeiter am Standort Bad Zwischenahn bei Oldenburg (Oldb.). Der Einsatzbereich von Mobilwänden ist überall dort sinnvoll, wo flexible Raumlösungen benötigt werden wie z.B. in Hotels, Gemeindehäusern, Mehrzweckhallen, Kirchen, Casinos, Industriegebäuden, Versammlungs- und Besprechungsräumen....

Anzeige ansehenTechnischer Zeichner, Bauzeichner
Smucums
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Smucums an!   Senden Sie eine Private Message an Smucums  Schreiben Sie einen Gästebucheintrag für Smucums

Beiträge: 38
Registriert: 24.06.2002

erstellt am: 09. Nov. 2010 16:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tusor 10 Unities + Antwort hilfreich

Hallo Clayton,

dein Ansatz sieht vielversprechend aus. Sofern ich das richtig verstehe, hast du die NaN-Positionen mit Werten überschrieben. Bei hinreichend kleinen Lücken im Vergleich zur Anzahl der angegebenen Werte wird das sicherlich gut funktionieren. Das werde ich mal testen. Ich habe mir gegenwärtig auf einem anderen Weg beholfen, indem ich die fehlenden Werte mit 0 ersetzt habe, die Daten stammen aus einem Excel-Import. Der erste Rechenschritt war die Identifizierung der mit "0" besetzten Stellen (match(0,Vektor)für den Indexvektor. Mit der Matrixmultiplikation schließlich habe ich die entsprechenden Zeilen gelöscht. Der NaN-Ansatz kam hier leider zu keinem Ergebnis, denn jede mathematische Operation mit NaN ergibt wiederum NaN. Schade eigentlich.

MfG Smucums

------------------
„Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen.“
Edward A. Murphy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz