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

Code in matlab???

 

rocket
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 29.04.09
Wohnort: Essen
Version: ---
     Beitrag Verfasst am: 29.04.2009, 16:36     Titel: Code in matlab???
  Antworten mit Zitat      
Hallo Leute....
habe folgendes Problem...habe bisher nur mit C geproggt...
Code:

double sig[20]
double buf[20]
double minimum=2;
int i,k:

for (i=0;i<20;i++){
      for(k=0;k<255;k++){
               buf[i]+=u0[i][k];
               sig[i]=buf/256;
}
}
for (i=0;i<20;i++)
{
if (minimum>sig [i]);
     sig[i]=minimum;
else
     minimum=minimum;
}
 


dieses Programm habe ich mit einer S Function Builder in Simulink geschrieben, wie würde es in Matlab aussehen?
wäre dankbar für irgendwelche ansätze...kenne mich null aus bis jetzt...

mfg rocket
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 29.04.2009, 16:47     Titel:
  Antworten mit Zitat      
Moin,

bis auf die Tatsache das u0 nicht definiert ist und auch eine kurze Erklärung sinnvoll wäre, was dein Code macht oder machen soll, sieht es für mich so aus als könnte man das in Matlab in ein paar kurzen Zeilen lösen.

Also deshalb die Frage: Was ist u0 und was genau soll in der for-Schleife passieren?

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
rocket
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 29.04.09
Wohnort: Essen
Version: ---
     Beitrag Verfasst am: 29.04.2009, 17:16     Titel:
  Antworten mit Zitat      
Sorry...Also u0 ist der Eingang der S Function Builder der muss ja selbst im Programm nicht definiert werden...Ich habe in Simulink eingestellt das Blockweise(256) Werte eingelesen werden...
Das Prgramm macht folgendes bzw soll:-)
Die Werte von u0 sollen im Array buf abgespeichert werden, anschliessend wird daraus der Mittelwert ausgerechnet...
In der nächsten For Schleife möchte ich den kleinsten Mittelwert im Array rauslesen lassen, dafür definiere ich vorher ein minimum...

Was mich intersiert bei der ganzen sache, wie übergebe ich Werte an Arrays??in C ist das net so schwer...aber matlab ist für mich neuland....
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 29.04.2009, 17:36     Titel:
  Antworten mit Zitat      
Also dann mal los:

Code:

function sig = MinMean(u0)

% wenn u0 ein 20x256-Array ist dann:
sig = min(mean(u0,2));
% mean berechnet den Mittelwert; die 2 gibt die Dimension an, also in diesem Fall Zeilenweise
% min findet dann anschließend den kleinsten Wert
 


Das ist das Schöne an Matlab, durch die Matrixoperationen spart man sich jede Menge Programmieraufwand und es gibt eigentlich für alles mögliche schon Funktionen (wie z.B. Mittelwert bilden, Minimum finden) - aber OK, ich merke ich schweife ab Wink

Werte an Arrays übergeben ist mindestens genauso einfach:
Code:
% eine 3x2-Matrix initialisieren (alle Einträge sind 0):
A = zeros(3,2);
% erste Spalte mit dem Vektor [1,2] füllen:
A(1,:) = [1,2];
% den letzten Eintrag der Matrix auf 9 setzen:
A(3,2) = 9;
 


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
rocket
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 29.04.09
Wohnort: Essen
Version: ---
     Beitrag Verfasst am: 29.04.2009, 19:30     Titel:
  Antworten mit Zitat      
soweit so gut...danke...hat mir echt geholfen...Smile
ist ja schon fast alles vordefiniert...mean, min usw...s

allerdings muss ich mich korrigieren denn U0 ist ein 256x1 Signal...
Also ich habe in Simulink einen Buffer Block genommen und ihn auf 256 gestellt...anschliessend gewichte ich das signal mit einen Hannfenster und transformiere es mit einer FFT...danach wollte ich jeweils 20 Fenster Hann (256 Werte) in einen Array sammeln und das Fenster mit dem kleinsten mittelwert ausgeben....
So das ist so die Vorgeschichte:-)

Ich wollte von jeden Vektor einen Mittelwert... 20 Mittelwerte in einen Array ablegen und das array nach dem Minimum suchen...
brauche ich dort net eine Schleife???
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 30.04.2009, 10:14     Titel:
  Antworten mit Zitat      
Moin,

hmmm... es kommt darauf an. Wenn du die 20 verschiedenen Signale vorliegen hast, bevor du die Funktion aufrufst, dann brauchst du keine Schleife.

Wenn du ausgehend von meinem Code oben jetzt noch wissen möchtest, welcher der 20 Werte das Minimum ist, dann musst du folgendes schreiben:

Code:

function sig = MinMean(u0)

% wenn u0 ein 20x256-Array ist dann:
MeanU0 = mean(u0,2);
% MEAN berechnet den Mittelwert; die 2 gibt die Dimension an, also in diesem Fall Zeilenweise
sig = find(MeanU0==min(MeanU0));
% MIN findet den kleinsten Wert und FIND gibt den Index von dem Wert zurück


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
rocket
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 29.04.09
Wohnort: Essen
Version: ---
     Beitrag Verfasst am: 30.04.2009, 13:33     Titel: kennt find nicht
  Antworten mit Zitat      
danke erstmal!!!
Der Embedded Matlab Block kennt die find Anweisung nicht...Sad
U0 ist kein 20x256 Array...
Er kommt von Simulink als Vektor 256x1...
Ich möchte 20 solcher Vektoren ablegen in einen Array...
Wenn der Speicher voll ist, soll der Mittelwerte sowie das minimum bestimmt werden...
und dann wieder das gleiche spiel von vorne...20 Vektoren einlesen usw....
lg rocket
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.