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 vorhandenen Matrixen

 

Denky1
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2015, 10:19     Titel: Matrix erstellen aus vorhandenen Matrixen
  Antworten mit Zitat      
Hallo zusammen,
ich habe wieder mal ein Problem und hoffe das Ihr mir helfen könnt.

Ich habe eine 38x3 Matrix. Dort sind verschiedene Frequenzen gespeichert. Es können auch einzelne Frequenzen mehrmals in der Matrix vorkommen.

Zusätzlich habe ich noch eine Frequenzmatrix 1x29. Alle Frequenzen aus der 38x3 Matrix bestehen aus der 1x29 Matrix.

Ich habe auch noch eine 1x29 Matrix mit den dazugehörigen Amplituden von der Frequenzmatrix 1x29.

Ich hätte gerne eine 38x3 Matrix mit den Frequenzen(die habe ich schon) und eine 38x3 Matrix mit den dazugehörigen Amplituden.

Habt ihr eine Idee?

Gruß Denky
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.08.2015, 10:30     Titel:
  Antworten mit Zitat      
Hallo,

eine Möglichkeit ist containers.Map

Code:
freqs = 100:103;
amps = 50:53;
mapObj = containers.Map(freqs, amps);
arrayfun(@(x) mapObj(x), freqMat)


Allerdings gut möglich, dass es elegantere oder schnellere Alternativen gibt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2015, 12:59     Titel:
  Antworten mit Zitat      
Danke für die Antwort, aber ich bekomme es trotzdem nicht hin....
Ich Versuche es nochmal anhand eines Beispiel:

Code:

%Frequenzmatrix 1x29
x=(f1,f2,f3,f4,f5,f6,f6,f8, ... f29)

%Amplitudenmatrix 1x29
y=(a1,a2,a3,a4,a5,a6,a7,a8,a9, ..., a29)

%Durch eine Funktion habe ich eine 38x3 Frequenzmatrix erhalten die wie folgt aussieht:
x1=(f1,f3,f5;
f4,f1,f9;
f4,f4,f29;
....;)

Nun möchte ich eine zusätzliche 38x3 Amplitudenmatrix erstellen die wie folgt aussieht:
x1=(a1,a3,a5;
a4,a1,a9;
a4,a4,a29;
....;)
 

Also die passenden Amplituden möchte ich gerne in einer Matrix haben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Maxx_BMT
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 75
Anmeldedatum: 09.10.13
Wohnort: Ilmenau
Version: R2011a, R2016a
     Beitrag Verfasst am: 06.08.2015, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

hast du schon mal anstatt der runden Klammern versucht mit eckigen Klammern zu arbeiten so ähnlich wie in diesem Link beschrieben.

http://de.mathworks.com/help/matlab/ref/specialcharacters.html

Wenn du z.B. die Werte x = 1, y = 2 und z = 3 hast, dann kannst du dir einfach einen Vektor so erzeugen (geht auch wenn x, y und z Vektoren sind):

Code:
vector = [x y z]
(eine neue Zeile fängst du mit einem Semikolon an)

Hilft dir das ?

Liebe Grüße
Maxx_BMT
_________________

Mathematik ist ein geistreicher Luxus. - Friedrich der Große
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2015, 14:56     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Aber das ist nicht der Fehler....
Habe mir die Matrix angeschaut und es sieht gut aus...
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2015, 14:58     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Aber das ist nicht der Fehler....
Habe mir die Matrix angeschaut und es sieht gut aus...
In Matlab habe ich auch mit eckigen Klammer gearbeitet.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.08.2015, 15:45     Titel:
  Antworten mit Zitat      
Hallo,

bitte den Code hier so posten, wie du ihn in MATLAB schreibst. Idealerweise sollte er reproduzierbar sein, d.h. andere sollten ihn genau so ausführen können. Fehlende f1 bis f29 und a1 bis a29 sind da nicht hilfreich.

Zitat:
Danke für die Antwort, aber ich bekomme es trotzdem nicht hin....

Hast du denn versucht, meinen Vorschlag direkt auf dein eigenes Beispiel zu übertragen? Was ist dabei passiert?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2015, 19:00     Titel:
  Antworten mit Zitat      
Code:

%Beispiel:
%Die Frequenzen habe ich gefunden
F=[1618 1618.6 1619.8 1619.9 1623 1623.8 1624.5]

%Diese Frequenzen habe ich berechnet
Freq=[1618 1618 1624.5; 1623 1623 1619.9]

%Das sind die dazugehörigen Amplituden von F
A=[2 2 2 4 3 4 2]

%Damit will ich die passenden Amplituden speichern
for l=1:3
for m=length(Freq)
    k=Freq(m,l)
y(m,l)=find(F==k);
end
end
Amp=A(y,:);

%Es soll wie folgt aussehen:
Amp=[2 2 2; 3 3 4]
 


Zuletzt bearbeitet von Denky1 am 06.08.2015, 20:00, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.08.2015, 19:31     Titel:
  Antworten mit Zitat      
Hallo,

nochmal:
Zitat:
Hast du denn versucht, meinen Vorschlag direkt auf dein eigenes Beispiel zu übertragen? Was ist dabei passiert?


Woher kommt in deinem Beispiel die 5 in Amp?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2015, 20:00     Titel:
  Antworten mit Zitat      
Hast Recht, da muss eine 2 hin. Sry. Ich hab es geändert.

Ich habe mal dein Code eingebaut wie folgt:

Code:

mapObj = containers.Map(F, Npks);
arrayfun(@(x) mapObj(x), freqMat)
 


und habe folgendes bekommen:

Code:

Undefined function or variable 'freqMat'.

Error in Test2 (line 28)
arrayfun(@(x) mapObj(x), freqMat)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.08.2015, 20:59     Titel:
  Antworten mit Zitat      
Hallo,

freqMat war in meinem Beispiel die Daten, die abgebildet werden sollen.

Mit deinen Variablen:
Code:
mapObj = containers.Map(F, A)
arrayfun(@(x) mapObj(x), Freq)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2015, 08:21     Titel:
  Antworten mit Zitat      
Danke Harald du bist der Beste.
Es hat geklappt Very Happy
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.