How to erase a specific elements for the name of string values and then replace them?
Ältere Kommentare anzeigen
Hello everyone,
I have names of values in this form:
dd_mm_yy_hh_mm_ss
for example:
Temp_06_02_24_10_39_34 = 32;
I would like to select only the number for the month (02) and replace it with the coresponding name of month in order to creat new value, for example:
Temp_Feb = 32;
How can I do this ?
Best regards, Ahmad
3 Kommentare
Adam Danz
am 17 Apr. 2024
Is "Temp_06_02_24_10_39_34 " a variable name or is "Temp_06_02_24_10_39_34 = 32;" a string value?
Ahmad Al-Issa
am 17 Apr. 2024
Very bad data design has meta-data (e.g. dates) in variable names. Such badly-designed data will force you into writing slow, complex, inefficient, obfuscated code that is fragile/buggy and hard to debug. Best avoided:
Learn to use arrays.
Akzeptierte Antwort
Weitere Antworten (1)
I would suggest in general that you not embed the date time data in the variable name. Instead use a table, timetable, or some other data structure to hold these values along with the temperatures. Here's a little example using just a MATLAB table
% Make example table to hold data
yyyy = [2023,2023,2023,2024]'
mm = [8,4, 2, 3 ]'
dd = [15,18,6, 2]'
hh = [9,13,8,23]'
mi = [15,18,59,42]'
sec = [11,22,19,49]'
T = [29,15.3,22, 36.4]'
time = datetime(yyyy,mm,dd,hh,mi,sec);
Tdata = table(time,T)
% Find the temperature for February (month = 2)
idl = month(Tdata.time) == 2;
Tdata.T(idl)
9 Kommentare
Ahmad Al-Issa
am 17 Apr. 2024
Jon
am 17 Apr. 2024
I don't know what you mean, that you just want to change the name. In anycase you are really heading in the wrong direction embedding the date and time data in the variable names. It is very difficult, and you miss harnessing the whole power of MATLAB if you go that way.
Ahmad Al-Issa
am 17 Apr. 2024
Verschoben: Voss
am 17 Apr. 2024
Jon
am 17 Apr. 2024
Sorry, I'm really not understanding what you are trying to do. I reread your question but I still don't get it. Please either try again to give a very simple, example of exactly what you want to do, or wait, and maybe someone else understands what you are asking and they can help you
Stephen23
am 17 Apr. 2024
"I have names of values in this form"
The most important question is: how did you get all of these variables into the workspace? That is one opportunity to fix this bad data design. For example, if you used LOAD then LOAD into an output variable and access its fields:
S = load(..)
Ahmad Al-Issa
am 17 Apr. 2024
Adam Danz
am 17 Apr. 2024
It looks like the goal is to use Temp_15_05_24_10_44_22 or Temp_May as a variable name. Don't do this. It's really bad practice. If the month is meaningful, store it somewhere else in another variable or with in a table that contains all of the data so the data travels together.
Here is an approach for extracting the month from a string with day month year ..and then creating a new string with just the month
s1 = 'Temp_15_05_24_10_44_22'
time = datetime(s1(6:end),'InputFormat','dd_MM_yy_HH_mm_ss')
mname = month(time,"shortname");
s2 = "Temp_" + mname{1}
Ahmad Al-Issa
am 17 Apr. 2024
Kategorien
Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!