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

Verschieden große Sequenzen in Spalten erweitern

 

Adamus31
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.09.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2021, 21:44     Titel: Verschieden große Sequenzen in Spalten erweitern
  Antworten mit Zitat      
Hallo Leute,

ich habe eine logische Matrix D. Diese untersuche ich in einer Schleife spaltenweise auf Nullen. Die Nullsequenzen werden gefunden, Output ist der Index der Nullen als Vektor, also sowas z.B. y11= 54 55 56 57 58 59 . Dieser Vektor y11 ändert sich in Länge und zusätzlich ändert sich auch der Index Spalte für Spalte. Mein Ziel ist es diesen Vektor y11 in jeder Spalte jeweils um eine Zelle nach "oben" wie "unten" zu erweitern, also sowas zu erhalten: y11=53 54 55 56 57 58 59 60. Ich habe es mit padarray probiert, bekomme es aber nicht hin. Habe mal ein paar Zeilen hier reinkopiert, wie ich angefangen habe und dann verzweifelt bin.

Code:
[p q]=size(D);
for i=1:q
y11=find(~D(:,1:i));
ylong=length(y11);
if ylong>1
    yy11=1:p;
   .....
   
end
end


Das ganze soll dann auch in die Matrix D geschrieben werden, die dann dazu nützlich sein soll, durch eine elementweise Multiplikation Werte aus der Matrix E zu eliminieren.
Wäre sehr dankbar für eure Mithilfe.
Beste Grüße
Adam
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.01.2021, 22:12     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Mein Ziel ist es diesen Vektor y11 in jeder Spalte jeweils um eine Zelle nach "oben" wie "unten" zu erweitern, also sowas zu erhalten: y11=53 54 55 56 57 58 59 60.

Für dieses Beispiel: y11 = [53; y11; 60]
Das soll aber wahrscheinlich allgemeiner passieren. Wie (d.h. wie das Ergebnis generell aussehen soll) kann ich jedoch der Frage nicht entnehmen.

Zitat:
Das ganze soll dann auch in die Matrix D geschrieben werden

Das ganze? y11? Ich halte es nicht für sehr sinnvoll, einen Vektor mit allgemeinen Einträgen in eine logische Matrix zu schreiben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Adamus31
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.09.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2021, 22:07     Titel:
  Antworten mit Zitat      
Hallo Leute,

danke für die Antwort Harald.
Ich hole ein wenig weiter aus. Im Anhang findest ihr die logische Matrix D und ein Sinogram eines synthetischen Phantoms als Matrix. In der Vorverarbeitung habe ich mittels Schwellenwertsegmentierung die logische Matrix D aus dem Sinogram erstellt. Die false Werte der Matrix D stellen die Inkonsistenzen aus der Sinogrammatrize da.
Diese "Spur" der Inkonsistenzen soll nun jeweils um ein False Element aufgeblasen werden, so eine Art Saum um die Spur. Habe ein bisschen weitergebastelt:
Code:
[p q]=size(D);
E=D(1:p,1:q);
F=[];
for i=1:q
       y11=find(~D(:,i));
       y12=y11(1)-1;
       y13=y11(end)+1;
       y14 = sort([y12; y11; y13]);
       ylong=length(y14);
if ylong>1
    yy11=1:p;
   F(y14,i)=0;
   E(y14,i)=F(y14,i);
end
end
 

Das ganze geht sicher eleganter...Mit dem Schnipsel gelingt mir mein Vorhaben zumindest teilweise, und zwar genau bis dort hin wo die Spur sich entlang der Spalten aufgezweigt. Danach sind die Aussenränder zwar aufgepolstert, jedoch nicht die Innenränder der nun zwei Spuren. Da ich verschiedene Phantome durchjagen möchte, könnten auch mehr als zwei SPuren in der Matrix vorhanden sein. Zu guter letzt wird die Matrix D mit dem Sinogram multipliziert, um die Inkonsistenzen mit einem Saum aus dem Sinogram zu entfernen. Ich hoffe dass ich mich nun verständlich ausgedrückt habe und ihr mittels der angehängten Dateien nachvollziehen könnt worauf ich hinaus will. Freue mich auf weitere Anregungen eurerseits.

Beste Grüße
Adam

logischeMatrix.mat
 Beschreibung:

Download
 Dateiname:  logischeMatrix.mat
 Dateigröße:  1.64 KB
 Heruntergeladen:  157 mal
SinogramMatrix.mat
 Beschreibung:

Download
 Dateiname:  SinogramMatrix.mat
 Dateigröße:  549.6 KB
 Heruntergeladen:  170 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.01.2021, 22:44     Titel:
  Antworten mit Zitat      
Hallo,

davon abgesehen, dass man die Berechnung von y12 bis y14 bequem in eine Zeile packen kann, frage ich mich vor allem, ob das Sortieren notwendig ist. y11 ist doch ohnehin sortiert und damit auch y14?

Das war für meinen Geschmack jetzt zu ausführlich. Vor allem ist mir nicht klar, ob sich in all dem jetzt eine Frage verbirgt außer ob man y14 eleganter berechnen kann.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.