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

Daten in Matrix mit festen Spalten

 

incredible
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 25.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2016, 16:24     Titel: Daten in Matrix mit festen Spalten
  Antworten mit Zitat      
Hallo,


zu meinem Probelm:
ich hab eine Matrix zB: B= zeros(5,p);
und Messdaten in einem Vektor, der belieb lang ist.

Meine Messdaten sollen jetzt in die Matrix eingetragen werden, allerdings Zeilenweiße und darf p nich überschreiten, wenn die Position überschritten wird, soll in der nächsten Zeile weiter eingefügt werden.

Hab schon mehrere kleine Programme gemacht und komme einfach nicht auf die richtige Lösung.

Hier ein nicht funktonierendes Beispiel:

Code:

d= [1:1:100]
d = d(:);
p = 10;
B = zeroes (5,p);
pos = 1;
i = 1;

for (j=pos:(pos+22))
while (pos <=p)
B (i,j) = d(j);
pos = pos+1;

end
pos = 1;
i = i+1;
end
 


Hoffe mein Problem ist verständlich ausgedrückt und ihr könnt mir weiter helfen :)
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: 25.02.2016, 16:35     Titel:
  Antworten mit Zitat      
in der while schleife verändern sich i und j nicht.
außerdem verstehe ich noch nicht was du erreichen willst.
meinst du reshape ?
ein minimalbeispiel wäre hier sicherlich hilfreich zur veranschaulichung.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
incredible
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 25.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2016, 17:03     Titel:
  Antworten mit Zitat      
Wenn ich den Vektor
v = (1:20) hab soll es in die Matrix
[ 1 2 3
4 5 6
7 8 9 ] eingespeichert werden


mit reshape funktoniert das leider nicht weil ich eigentlich ein großes Programm hab und das alles ein wenig komplexer ist :/ und eine for schleife habe die nur bis zu einem bestimmten Intervall zählt und auf eine Diagonal ähnliche Form schreibt

Dachte ich versuch es mal mit einem einfachem Beipsiel bevor ich das in das große Programm einbaue

Ist mein Problem jetzt verständlicher geworden?
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: 25.02.2016, 17:15     Titel:
  Antworten mit Zitat      
dein minimalbeispiel lässt sich aber mit reshape lösen. es ist schwer vorschläge zu geben wenn das beispiel das problem nicht wiedergibt ^^
_________________

richtig Fragen
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: 25.02.2016, 17:16     Titel:
  Antworten mit Zitat      
Hallo,

warum soll das mit reshape nicht möglich sein?

Code:

>> v = (1:20)

v =

     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20

>> n = 3; m= 3;
>> M = reshape(v(1:n*m),n,m)

M =

     1     4     7
     2     5     8
     3     6     9
 
Private Nachricht senden Benutzer-Profile anzeigen
 
incredible
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 25.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 10:01     Titel:
  Antworten mit Zitat      
Ok, nochmal auf Anfang

Zu meinem Probelm, ich hab einen Messkopf der sich hin und her bewegt(zB im Intervall von 10). Das zumessende Objekt wird übereinander gelegt und hat zB. insgesamt 98 Messtellen, welches aber auch rotiert.
Der Messkopf misst jetzt einen Wert der aber zwei Messtellen zugeordnet wird.

Diese werden jetzt in eine Matrix (nx98) eingetragen.

Ich hab jetzt eine for schleife for (1:intervall) die für das erste Intervall durchläuft, dh ich bin bei dem Punkt in der Matrix M[10,10]
Wenn der Messkopf wieder zurück läuft mit der for schleife (1:intervall) soll er weiter in der Matrix eintragen und nicht wieder bei M[n,1]starten.

Zu beachten ist dass die Matrix aber nur bis 98 läuft & dann wieder bei 1 startet.


Dachte ich veranschauliche mir das erstmal mit einem einfachen Beispiel, wie ich das mit den schleifen umsetzten kann
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: 26.02.2016, 10:22     Titel:
  Antworten mit Zitat      
was ist denn n? wie kommst du mit 1:10 auf [10,10] das sind 100 werte . wie passt das zu den 98....
ich seh da noch nicht durch. mach doch mal eine einfache beispiel matrix. also nicht nx98 sondern von mir aus 3x6 und sag dann was damit passieren soll
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
incredible
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 25.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 11:42     Titel:
  Antworten mit Zitat      
Sorry, weiß nicht so recht wie ich es erklären soll

Im Prinzip möchte ich einfach nur wissen wie ich das Problem von oben mit schleifen darstellen lässt, damit ich das umsetzen kann


Falls du es konkreter wissen möchtest:
n ist beliebig lang, da umsomehr Durchgänge ich mache desto länger die Matrix wird

Mit M[10,10] meinte ich eigentlich M(10,10) das ist der letzte Wert der in die Matrix engetragen wird, [korrespondierent dazu bei dem Eintrag M(10,8Cool ]
Bei diesem Wert bzw von dieser Position aus sollweiter eingetagen werden bei dem Rücklauf der Messung
und betrachtet bzw beachtet werden dass die Matrix aber nur 98 Spalten hat (dh. hätte ich mehr als 10 durchläufe wären wir am Matrix ende

Im Idealfall dh wäre mein Intervall 49 (einmal Vorwärts bzw Rückwärts) hätte ich diese Matrix

[1 0 .................................0 1
0 1 0.............................0 1 0
0 0 1 .........................0 1 0 0
. ..
..

0 ................1 1 0 ..............0
0 1 0 0 1
.... .....

1 0 ................................ 0 1]
Also eine Matrix mit einem X von Einträgen
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: 26.02.2016, 11:54     Titel:
  Antworten mit Zitat      
incredible hat Folgendes geschrieben:

Im Prinzip möchte ich einfach nur wissen wie ich das Problem von oben mit schleifen darstellen lässt, damit ich das umsetzen kann


Dazu müsste man aber erstmal den Weg vom Vektor zu deiner gewünschten Matrix kennen. Dein Erklärung hilft mir da imho nicht weiter.

Was hat M(10,10) denn mit 98 Spalten zu tun? M(10,10) ist das 100. Element in der Matrix.

Zitat:
Bei diesem Wert bzw von dieser Position aus sollweiter eingetagen werden bei dem Rücklauf der Messung...


Wohin eingetragen werden? Was hat der Rücklauf mit dem Vektor zu tun?

Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
incredible
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 25.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 12:51     Titel:
  Antworten mit Zitat      
Wenn ich eine Matrix habe M = [1,2,3;4,5,6;7,8,9]
und dann zB eingebe M (3,2) bekomme ich 8 raus


In dem Vektor sind die Messdaten gespeichert.
Dh wenn der Kopf zurück läuft misst er ja weiter zwei Punkte und setzt weiter an in der Matrix und fängt nicht wieder in der 1. Spalte an
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: 26.02.2016, 13:00     Titel:
  Antworten mit Zitat      
Das erklärt immer noch nichts.

Ist es denn nicht möglich mal einen Beispielvektor zu nehmen und an Hand dessen zu zeigen wie die Matrix gefüllt werden soll und was dann passieren soll wenn die Matrix die gewünschte Größe erreicht hat. Aber eben nicht mit 98 Spalten sondern nur ein paar wenigen.

Wenn du das kannst, kommst du evtl auch schon selber auf die Lösung.
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.