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

Winddaten von cm/sec in Beaufort umwandeln

 

Flymann
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 05.08.2024, 11:04     Titel: Winddaten von cm/sec in Beaufort umwandeln
  Antworten mit Zitat      
Moin,
ich habe eine Wetterstation in Betrieb und die Daten werden sauber übermittelt.
Da ich noch neu in der Materie bin hoffe ich von Euch Tips darüber bekommen kann wie ich die umrechnen und anzeigen lassen kann.
Nach meiner Suche hab ich in unter analyzis App in der Zeile analyzedData = ;
folgendes eingegeben:
% umrechnung von cm/s in beaufort.
if wind_speed_cm<2.1
beaufort = 0;
elseif wind_speed_cm/s < 15.1
beaufort = 1:
usw bis
end
Wo genau muß dieser Code falls der richtig ist eingesetzt werden ?
Besten Dank
Thomas
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.027
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 05.08.2024, 12:07     Titel:
  Antworten mit Zitat      
Moin,

spontan würde ich zu folgendem als Ansatz tendieren:
Code:
% Umrechnung von m/s in Beaufort.
wind_speed_ms = rand(10,1).*40;
bf_edges = [0 0.2 1.5 3.3 5.4 7.9 10.7 13.8 17.1 20.7 24.4 28.4 32.6 100]; % der Wert 100 ist ausgedacht, als "obere Grenze" für die "open-end" Windstärke 12
bf_values = 0:12;
beaufort = discretize(wind_speed_ms, bf_edges, bf_values);
disp([wind_speed_ms,bf])
 


Den Code könntest du als Funktion speichern und dann kannst du diese einfach da aufrufen, wo du die Beaufort-Windstärke statt der cm/s-Werte haben willst.

Gruß
Steve

PS: Bitte am besten ein funktionierendes Beispiel posten (unter Verwendung der Code-Umgebung), dann kann dir schneller geholfen werden.
_________________

>> 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
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 05.08.2024, 15:48     Titel:
  Antworten mit Zitat      
Tach auch,
aber mit der Antwort bin ich jetzt ein wenig überfordert.
Bitte gebt mir doch eine step by step Anleitung, damit ich weiß wo ich was einzutragen habe.
Besten Dank
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.484
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.08.2024, 16:18     Titel:
  Antworten mit Zitat      
Hallo,

das mag nun wie blöde Antworten wirken, besser geht es aber mit den zur Verfügung stehenden Informationen nicht.

was du eintragen musst:
Die Zeilen, die steve dir geschrieben hat. Da du kein komplettes Code-Beispiel gepostet hast, hat steve Beispieldaten generiert. Diese kannst du weglassen, ebenso den disp-Befehl. Statt des von steve verwendeten Variablennamen musst du den in deiner Anwendung verwenden, z.B. dann
Code:
% Skalierung mit 100, wenn du tatsächlich cm/s statt m/s hast.
bf_edges = 100*[0 0.2 1.5 3.3 5.4 7.9 10.7 13.8 17.1 20.7 24.4 28.4 32.6 100]; % der Wert 100 ist ausgedacht, als "obere Grenze" für die "open-end" Windstärke 12

bf_values = 0:12;
beaufort = discretize(wind_speed_cm, bf_edges, bf_values);


wo du es eintragen musst:
An der Stelle, an der die Umrechnung ausgeführt werden soll. Da du kein komplettes Code-Beispiel gepostet hast, kann man dir keine bessere Antwort geben.

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
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 05.08.2024, 17:27     Titel:
  Antworten mit Zitat      
Tach auch Zusammen,
hier ist der Code aus chatgpd. Mehr habe ich nicht.
2. Ich komme einfach nicht klar mit dem wo ich was einzusetzen haben. Weder mit diesem Code noch mit dem code aus der 1. Antwort. Mein Wissen ist dazu einfach noch zu gering.


% Kanal- und API-Schlüssel
channelID = 123456; % Ersetzen Sie dies durch Ihre Kanal-ID
readAPIKey = 'abc123'; % Ersetzen Sie dies durch Ihren Lese-API-Schlüssel
writeAPIKey = 'def456'; % Ersetzen Sie dies durch Ihren Schreib-API-Schlüssel

% Aktuelle Windgeschwindigkeit lesen (in cm/s)
wind_speed_cms = thingSpeakRead(channelID, 'Fields', 1, 'NumPoints', 1, 'ReadKey', readAPIKey);

% Umrechnung von cm/s in die Beaufort-Skala
if wind_speed_cms < 2.1
beaufort = 0;
elseif wind_speed_cms < 15.1
beaufort = 1;
elseif wind_speed_cms < 33.1
beaufort = 2;
elseif wind_speed_cms < 54.1
beaufort = 3;
elseif wind_speed_cms < 79.1
beaufort = 4;
elseif wind_speed_cms < 107.1
beaufort = 5;
elseif wind_speed_cms < 138.1
beaufort = 6;
elseif wind_speed_cms < 171.1
beaufort = 7;
elseif wind_speed_cms < 207.1
beaufort = 8;
elseif wind_speed_cms < 244.1
beaufort = 9;
elseif wind_speed_cms < 284.1
beaufort = 10;
elseif wind_speed_cms < 326.1
beaufort = 11;
else
beaufort = 12;
end

% Beaufort-Wert in ein anderes Feld schreiben
thingSpeakWrite(channelID, 'Fields', 2, 'Values', beaufort, 'WriteKey', writeAPIKey);

% analysedData setzen (optional)
analysedData = beaufort;
Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Vorschlag wäre, das längliche if durch discretize zu ersetzen, also:

Code:
% Kanal- und API-Schlüssel
channelID = 123456; % Ersetzen Sie dies durch Ihre Kanal-ID
readAPIKey = 'abc123'; % Ersetzen Sie dies durch Ihren Lese-API-Schlüssel
writeAPIKey = 'def456'; % Ersetzen Sie dies durch Ihren Schreib-API-Schlüssel

% Aktuelle Windgeschwindigkeit lesen (in cm/s)
wind_speed_cms = thingSpeakRead(channelID, 'Fields', 1, 'NumPoints', 1, 'ReadKey', readAPIKey);

% Umrechnung von cm/s in die Beaufort-Skala
% Skalierung mit 100, wenn du tatsächlich cm/s statt m/s hast.
bf_edges = 100*[0 0.2 1.5 3.3 5.4 7.9 10.7 13.8 17.1 20.7 24.4 28.4 32.6 100]; % der Wert 100 ist ausgedacht, als "obere Grenze" für die "open-end" Windstärke 12

bf_values = 0:12;
beaufort = discretize(wind_speed_cms, bf_edges, bf_values);


% Beaufort-Wert in ein anderes Feld schreiben
thingSpeakWrite(channelID, 'Fields', 2, 'Values', beaufort, 'WriteKey', writeAPIKey);

% analysedData setzen (optional)
analysedData = beaufort;


Das ist aber eher eine kosmetische Sache.

Der von dir gepostete Code sieht ja auf den ersten Blick gut aus. Welche Probleme treten denn dabei auf?

Systematisch anfangen zu lernen kannst du im MATLAB Onramp:
https://matlabacademy.mathworks.com.....lab-onramp/gettingstarted

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
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 05.08.2024, 20:37     Titel:
  Antworten mit Zitat      
Moin,
wenn ich den Code von mir eingebe und zwar nach dem Semikolon
in der Zeile
analyzedData = ; % Umrechnen von cm/sec in Beaufort.
Dann erhalte ich diese Fehler Meldung:

Error in /users/mss.system.xxfxv/Umrechnung von cm/s in beaufort Line: 31 Column: 16
Invalid expression. Check for missing or extra characters.

Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

eine solche Zeile enthält dein Code doch gar nicht? Wenn der Code eine solche Zeile enthält, dann ja: zwischen = und ; fehlt augenscheinlich was.

Solltest du deine Datei "Umrechnung von cm/s in beaufort.m" genannt haben, dann ist dies das Problem: ein Dateiname darf keine Leer- oder Sonderzeichen beinhalten. Darauf wird beim Speichern an sich auch hingewiesen.

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
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.027
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 06.08.2024, 07:18     Titel:
  Antworten mit Zitat      
Moin,

als Ergänzung zu Harald: Der Code von dir oben scheint nicht der Code zu sein, der die Fehlermeldung ausgibt. Zeile 31 ist eine Zeile der langen If-Kette und da ist kein Fehler zu sehen.

Und nochmal meine Bitte: Spricht irgendetwas dagegen die Code-Umgebung zu nutzen?

Über dem Eingabefeld steht ja extra:
Zitat:
Bitte den Code mit Hilfe des Code -Buttons einfügen."

und Code ist da bereits der Button!

Danke und Gruß
Steve
_________________

>> 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
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 06.08.2024, 08:29     Titel:
  Antworten mit Zitat      
Moin,
Harald ich würde gerne deinen Code kopieren, da ich es nicht anders hin bekomme schreibe ich diesen einfach mal ab und teste.
Kann also dauern.
So einfach wie bei anderen Foren mit Copy und paste funktioniert es bei mir leider nicht.
Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 06.08.2024, 09:58     Titel:
  Antworten mit Zitat      
Moin,
da es mit dem copy und paste bei mir nicht so funktioniert wollte ich das ganze auf der custom Seite in das Code Feld eintragen.
Dazu tauchen 2 Fragen auf:
Wie bekomme ich die kurzen geraden Anführungszeichen auf der Tastatur, oder muß ich eine eckige Klammer nutzen.?
Mit was sind NumPoints gemeint?
Danke
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 06.08.2024, 10:08     Titel:
  Antworten mit Zitat      
Moin
ich wollte um es mir auch begreiflich zu machen mit der Matlab Akademie in die Materie einarbeiten.
Ich bin dabei schon an der ersten Aufgabe gescheitert.
Also für Euch, wenn ich keine richtige didaktische Anleitung erhalte, oder jemand der es mir von Anfang an richtig zeigt bin ich hier raus und belasse es so wie es ist.
Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
So einfach wie bei anderen Foren mit Copy und paste funktioniert es bei mir leider nicht.

Keine Ahnung, woran das bei dir liegt. Bei mir (Windows 10, Chrome) war das nie ein Problem.

Zitat:
Ich bin dabei schon an der ersten Aufgabe gescheitert.

Meines Wissens gibt es da bei jeder Aufgabe einen Button, sich die Lösung anzeigen zu lassen. Dann versteht man diese Aufgabe hoffentlich und kann sich der nächsten zuwenden, bei der es hoffentlich besser klappt.

Zitat:
auf der custom Seite in das Code Feld

Bzgl. MATLAB ist mir keine "custom Seite" bekannt. Wenn du eine andere Umgebung nutzt, bitte dazuschreiben.

Zitat:
Wie bekomme ich die kurzen geraden Anführungszeichen auf der Tastatur

Auf meiner Tastatur Shift + # (neben der Enter-Taste).

Zitat:
oder muß ich eine eckige Klammer nutzen.?

Das kommt darauf an, was du gerade eingibst. Ich verstehe auch offen gesagt nicht, wie sich die Frage stellen kann, wenn man nur Code abschreibt.

Zitat:
Mit was sind NumPoints gemeint?

Aus der Doku:
Zitat:
NumPoints — Number of data points
positive numeric scalar
Number of data points to extract, specified as a name-value pair consisting of 'NumPoints' and a numeric value. The number of points or rows of data is counted from the time the command is issued. The ThingSpeak server limits the number of points returned to a maximum of 8000.


Zitat:
Also für Euch, wenn ich keine richtige didaktische Anleitung erhalte, oder jemand der es mir von Anfang an richtig zeigt

Sowohl steve als auch ich sind sehr bemüht, dir zu helfen. Ehrlich gesagt ist es mir auch lieber, wenn eine Frage kommt, ich eine Antwort gebe und das erledigt ist als dass es etliche Male hin- und hergeht. Leider kann ich das nicht alleine beeinflussen, sondern bin da auch auf den Fragesteller angewiesen.

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
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 06.08.2024, 18:47     Titel: Fehler Meldung
  Antworten mit Zitat      
Moin,
nachdem ich endlich heraus gefunden habe wie ich den Code im Editor einige Einträge farblich hervorheben kann.
Ihr hättet mir sagen können das ich die ' doppelt schreiben muß damit die dann Magenta werden.
Dies hat mich 3 std Arbeit zusätzlich gekostet.
Herzlichen Dank dafür.

So und nun zu dieser Fehlermeldung nachdem der code im Editor geschrieben wurde,
habe ich jeden Buchstaben und jede Zahl einzeln verglichen ich finde den Fehler nicht.

File: /users/mss.system.gkcbl/Custom (no starter code) 2 Line: 18 Column: 36
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
Private Nachricht senden Benutzer-Profile anzeigen
 
Flymann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 05.08.24
Wohnort: Wetterau
Version: ---
     Beitrag Verfasst am: 06.08.2024, 19:09     Titel:
  Antworten mit Zitat      
Moin,
nachdem die Zeile 2 wundersamer Weise akzeptiert wurde habe ich jetzt folgende Fehlermeldung:

Error using Custom (no starter code) 2 (line 21)
Requests are too frequent. For further information, see Limitations in the documentation.

Was hat das zu bedeuten?
MFG
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3  Weiter

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.