Control Engineering
前往频道在 Telegram
جهت ارتباط با ادمینها، به گروه کانال مراجعه کنین. https://t.me/+k1OZ6I6uW5YzY2I8
显示更多2 310
订阅者
+224 小时
+67 天
+1630 天
帖子存档
2 310
خوب دیگه #chatgpt بسه،
کاپیتان صحبت میکنه!
حالا اگر بخواییم یک فایل json رو با متلب بخونیم،
میتونه محتوای json بصورت استرینگ ذخیره شده باشه، که اون موقع باید parse بشه و بعد jsondecode بشه!
یک تابع به صورت زیر در متلب کار مارو راه میندازه.
% Create a containers.Map object
myMap = containers.Map;
myMap('name') = 'John';
myMap('age') = 30;
myMap('city') = 'New York';
% Specify the filename to save to
fileName = 'output.json';
% Save the map to the JSON file
saveMapToJson(myMap, fileName);
disp(['Map saved to ' fileName]);
function saveMapToJson(map, fileName)
% Check if the input is a containers.Map
if ~isa(map, 'containers.Map')
error('Input must be a containers.Map object.');
end
% Convert the containers.Map to a struct
mapStruct = struct(map);
% Convert the struct to a JSON string
jsonString = jsonencode(mapStruct);
% Write the JSON string to the specified file
try
fid = fopen(fileName, 'w');
if fid == -1
error('Could not open the file for writing.');
end
fwrite(fid, jsonString, 'char');
fclose(fid);
catch
error('Error writing JSON data to the file.');
end
end
یا هم میتونه در یک فایل ذخیره شده باشه که اون هم باید اول از فایل بصورت خام خونده بشه و بعد parse و decode بشه.
یک تابع بصورت polymorphic در #متلب به این صورت میتونیم بنویسیم که چه داده تو فایل باشه و چه رشته باشه، بشه خوندش!
jsonData = '{"name": "John", "age": 30, "city": "New York"}';
myMap = jsonToMap(jsonData);
% Access values in the map
name = myMap('name');
age = myMap('age');
city = myMap('city');
disp(['Name: ' name]);
disp(['Age: ' num2str(age)]);
disp(['City: ' city]);
function map = jsonToMap(jsonData)
% Parse the JSON data
parsedData = jsondecode(jsonData);
% Check if the parsed data is a struct
if ~isstruct(parsedData)
error('Input JSON data does not represent a JSON object.');
end
% Convert the struct to a containers.Map
map = containers.Map;
% Loop through the fields of the struct and add them to the map
fields = fieldnames(parsedData);
for i = 1:numel(fields)
fieldName = fields{i};
fieldValue = parsedData.(fieldName);
map(fieldName) = fieldValue;
end
end
در نهایت اگر بخواییم containers.Map رو بصورت json ذخیره کنیم، به این صورت میتونیم این کار رو بکنیم! با یک مثال به تابع زیر دقت کنین.
% Example 1: Passing JSON data as a string
jsonData = '{"name": "John", "age": 30, "city": "New York"}';
myMap = jsonToMap(jsonData);
% Example 2: Passing a file name
fileName = 'data.json'; % Assuming you have a JSON file named 'data.json'
myMapFromFile = jsonToMap(fileName);
% Access values in the maps
name = myMap('name');
age = myMap('age');
city = myMap('city');
disp(['Name: ' name]);
disp(['Age: ' num2str(age)]);
disp(['City: ' city]);
% Access values in the map from file
nameFromFile = myMapFromFile('name');
ageFromFile = myMapFromFile('age');
cityFromFile = myMapFromFile('city');
disp(['Name from file: ' nameFromFile]);
disp(['Age from file: ' num2str(ageFromFile)]);
disp(['City from file: ' cityFromFile]);
function map = jsonToMap(inputData)
% Check if the input is a file name
if ischar(inputData) && exist(inputData, 'file') == 2
% Read JSON data from the file
jsonData = fileread(inputData);
elseif ischar(inputData)
% Use the input data as JSON string
jsonData = inputData;
else
error('Input must be a file name or a JSON string.');
end
% Parse the JSON data
parsedData = jsondecode(jsonData);
% Check if the parsed data is a struct
if ~isstruct(parsedData)
error('Input JSON data does not represent a JSON object.');
end
% Convert the struct to a containers.Map
map = containers.Map;
% Loop through the fields of the struct and add them to the map
fields = fieldnames(parsedData);
for i = 1:numel(fields)
fieldName = fields{i};
fieldValue = parsedData.(fieldName);
map(fieldName) = fieldValue;
end
end2 310
فایل JSON (JavaScript Object Notation) یک فرمت سبک برای تبادل داده است که برای انسانها آسان برای خواندن و نوشتن و برای ماشینها آسان برای تجزیه و تولید است. معمولاً از JSON برای انتقال داده بین یک سرور و یک برنامه وب استفاده میشود، همچنین برای فایلهای پیکربندی و ذخیرهسازی داده نیز مورد استفاده قرار میگیرد.
فایلهای JSON شامل جفتهای کلید-مقدار هستند، که در آن هر کلید یک رشته درون علامتهای نقل قول دوتایی است و پس از آن دو نقطه و مقدار مرتبط میآید. مقدار مرتبط میتواند یک رشته، عدد، بولی، شیء، آرایه یا مقدار تهی (null) باشد. در زیر یک مثال ابتدایی از یک شیء JSON آمده است:
json
{
"name": "John Doe",
"age": 30,
"isStudent": false,
"hobbies": ["reading", "coding", "swimming"]
}
در این مثال، شیء JSON دارای چهار جفت کلید-مقدار است:
- "name" با مقدار "John Doe"
- "age" با مقدار 30
- "isStudent" با مقدار false
- "hobbies" با یک آرایه به عنوان مقدار
JSON به عنوان یک فرمت داده در توسعه وب به طور گسترده مورد استفاده قرار میگیرد، زیرا توسط بسیاری از زبانهای برنامهنویسی پشتیبانی میشود و به آسانی میتوان آن را به ساختارهای داده اصلی در این زبانها تبدیل کرد. به عنوان مثال معمولاً در رابطهای برنامهنویسی (API) برای تبادل داده بین مشتری و سرور استفاده میشود و همچنین برای فایلهای پیکربندی در برنامههای مختلف نیز استفاده میشود.2 310
در #متلب، containers.Map یک ویژگی مفید است که به کاربران اجازه میدهد تا دادهها را به صورت جفتهای "کلید-مقدار" ذخیره کنند. این کلاس به شما این امکان را میدهد که به سادگی بر اساس یک کلید، به مقدار متناظر آن دسترسی پیدا کنید.
مثالها
مثال 1: ایجاد یک
containers.Map
matlab
ایجاد یک دیکشنری با نام 'myDictionary'
myDictionary = containers.Map;
افزودن عناصر به دیکشنری
myDictionary('key1') = 'value1';
myDictionary('key2') = 'value2';
مثال 2: دسترسی به مقدار با استفاده از کلید
matlab
دسترسی به مقدار مرتبط با کلید 'کلید1'
value = myDictionary('key1');
disp(['Value correspoding to key1: ', value]);
مثال 3: بررسی وجود یک کلید در دیکشنری
matlab
بررسی وجود کلید 'key3' در دیکشنری
if isKey(myDictionary, 'key3')
disp('key3 is there!');
else
disp('key3 simply doesnt exist!');
end
روشهای مفید برای کار با containers.Map
#### isKey
این تابع بررسی میکند که آیا یک کلید مشخص در دیکشنری وجود دارد یا خیر.
#### keys و values
این دو تابع به ترتیب لیست کلیدها و مقادیر موجود در دیکشنری را بازگردانی میکنند.
#### remove
این تابع به شما اجازه میدهد تا یک عنصر را از دیکشنری حذف کنید.2 310
دیکشنری در پایتون یک دادهساختار اصلی است که برای ذخیره اطلاعات به صورت جفتهای کلید-مقدار استفاده میشود. هر کلید یکتا و بایدناپذیر است و به هر مقدار متناظر با آن دسترسی دارید. دیکشنریها میتوانند به عنوان یک مجموعه از جفتهای کلید-مقدار دیده شوند و برای ذخیره و بازیابی دادهها بسیار مفیدند. در ادامه، نمونهها و متدهایی برای کار با دیکشنریها در پایتون را معرفی میکنم.
مثالهایی از دیکشنریها در پایتون:
مثال 1: ساخت یک دیکشنری
python
person = {
"name": "ali",
"age": 30,
"city": "Tehran"
}
مثال 2: دسترسی به مقدار با استفاده از کلید
python
name = person["name"]
print(f"name: {name}")
مثال 3: اضافه کردن یک مورد جدید به دیکشنری
python person["job"] = "software guy"مثال 4: تغییر مقدار موجود
python person["age"] = 31مثال 5: حذف یک مورد از دیکشنری
python del person["city"]مثال 6: بررسی وجود کلید در دیکشنری
python
if "شغل" in person:
print("job: " + person["job"])
else:
print("job unidentified!")
مثال 7: دریافت تعداد کل اعضا در دیکشنری
python
num_items = len(person)
print(f"number of items in the dict: {num_items}")
مثال 8: دریافت لیست از کلیدها و مقادیر
python
keys = person.keys()
values = person.values()
print("keys: " + ", ".join(keys))
print("values: " + ", ".join(map(str, values)))
مثال 9: حلقه زدن روی مقادیر دیکشنری
python
for key, value in person.items():
print(f"{key}: {value}")
دیکشنریها یکی از دادهساختارهای پرکاربرد در پایتون هستند و میتوانند در موارد مختلفی مانند مدیریت دادهها، تنظیمات، وب سرویسها و بسیاری از برنامههای دیگر مورد استفاده قرار گیرند. از متدهایی مانند keys(), values(), و items() برای دسترسی به کلیدها، مقادیر، و جفتهای کلید-مقدار استفاده میشود. همچنین میتوان با استفاده از دستورات del`، `in و len دیکشنری را مدیریت کرد.2 310
بچه ها، کسایی که علوم داده کار میکنن،
چند تا پست در مورد این عناوین میزارم این پایین.
مفیده بخونین و کمکتون میکنه در پروژه هاتون.
۱. دیکشنری در پایتون
۲. معادل دیکشنری در متلب که containers.Map هست
۳. فایل json
۴. تبدیل json به containers.Map که بتونیم تو متلب هم باهاش کار کنیم
۵. تبدیل containers.Map به json که بتونیم دوباره تو فایل ذخیرش کنیم
توضیحات رو ChatGPT نوشته ولی من چک کردم و درستن. نگران نباشین و استفاده کنین :)
2 310
⏱ Reduce time to market and empower software engineers by simulating machine operations and validating software functions before physical production, enhancing collaboration between mechanical and electrical engineers, and reducing lead time.
⏭ Simulating machine operations to reduce time to market and enable software development.
🤝 Enhancing collaboration between mechanical and electrical engineers.
🕒 Achieving significant progress, including training, in less than a couple of weeks.
📈 Leveraging digital twins for in-house changes and customer validation.
2 310
کنترل مدل سه بعدی طراحی شده در نرم افزار
NX MCD (Mechatronics Concept Designer)
با PLC مجازی و حتی نرم افزار Matlab
2 310
Virtual Commissioning with NX MCD and PLCSim Advanced
Virtual commissioning with a digital twin is revolutionizing how Machine Builders are bringing their products to market. It allows for a 3D CAD model of a machine to be animated to emulate the real behavior of the machine, where the animations are controlled by a virtual PLC.
This video explains the main benefits of virtual commissioning with NX MCD and PLCSim Advanced.
@ControlEngineering98
2 310
2 310
2 310
Repost from Directapply
📢اعلام پوزیشن در مقطع #دکتری
📆 ددلاین : October 21, 2023
📚رشته:
🔰#electrical_engineering
🔰#physics
🔰#mechanical_engineering
🔧زمینه :
🔰In this project, you will work on cutting-edge multiparameter flow sensing systems. Applying deep symbolic AI to microfluidic sensor data will fundamentally improve the design and use of these systems in real-life applications.
🏫دانشگاه: University of Twente
🌎کشور: #هلند 🇳🇱
👈جزئیات کامل و نحوه اقدام
.................................
🆔@directapply
🆔@directapply
