English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
دخول البيانات في MATLAB يعني تحميل البيانات من ملفات خارجية. هوimportdataالميزة تسمح بتحميل أنواع مختلفة من ملفات البيانات. لديها خمس أشكال كما يلي-
الترقيم | شرح الميزة |
---|---|
1 | A = importdata(filename) منfilenameيعنيملفأضف البيانات إلى مصفوفة A. |
2 | A = importdata('-pastespecial') حمّل البيانات من اللوحة الافتراضية بدلاً من الملف. |
3 | A = importdata(___، delimiterIn) أحسب delimiterIn كفواصل تفصيلية في ملف ASCII، أو الاسم الملف أو البيانات في اللوحة الافتراضية. يمكنك استخدام delimiterIn مع أي من المعلمات المدخلة في النص النصي السابق. |
4 | A = importdata(___، delimiterIn، headerlinesIn) من ملف ASCII، أو الاسم الملف أو اللوحة الافتراضية، حمّل البيانات من السطرheaderlinesIn + 1بدء قراءة البيانات الرقمية. |
5 | [A, delimiterOut, headerlinesOut] = importdata(___) باستخدام أي من المعلمات المدخلة في النص النصي السابق، قم بتحديد الفواصل التي تم اكتشافها في ملف ASCII المدخل في delimiterOut والأسطر العنوانية التي تم اكتشافها في headerlinesOut. |
بالتشخيص، لا يدعم Octave هذا-importdata()يحتاج إلى هذا التطبيق، لذا يجب عليك البحث عن تثبيت هذا الحزمة حتى يمكن استخدام الأمثلة التالية مع تثبيت Octave.
دعنا نحمّل ونعرض ملف الصورة. قم بإنشاء ملف سكريبت وأكتب الكود التالي-
filename = 'smile.jpg'; A = importdata(filename); image(A);
عند تشغيل الملف، سيعرض MATLAB ملف الصور. ولكن يجب أن يتم تخزينه في الدليل الحالي.
في هذا المثال، نأخذ ملف نصي ونحدد Delimiter و Header. دعونا ننشئ ملف ASCII منفصل يحتوي على عناوينملف weeklydata.txtعناوين الصف.
يبدو ملف النص الخاص بنا weeklydata.txt هكذا-
الجمعة الإثنين الثلثاء الأربعاء الخميس الجمعة السبت 95.01 76.21 61.54 40.57 55.79 70.28 81.53 73.11 45.65 79.19 93.55 75.29 69.87 74.68 60.68 41.85 92.18 91.69 81.32 90.38 74.51 48.60 82.14 73.82 41.03 0.99 67.22 93.18 89.13 44.47 57.63 89.36 13.89 19.88 46.60
إنشاء ملف سكريبت واكتب فيه ما يلي-
filename = 'weeklydata.txt'; delimiterIn = ' '; headerlinesIn = 1; A = importdata(filename,delimiterIn,headerlinesIn); % View data for k = [1:7] disp(A.colheaders{1, k}) disp(A.data(:, k)) disp(' ') end
عند تشغيل ملف، يظهر النتيجة التالية -
الجمعة 95.0100 73.1100 60.6800 48.6000 89.1300 الإثنين 76.2100 45.6500 41.8500 82.1400 44.4700 الإثنين 61.5400 79.1900 92.1800 73.8200 57.6300 الجمعة 40.5700 93.5500 91.6900 41.0300 89.3600 الإثنين 55.7900 75.2900 81.3200 0.9900 13.8900 الخميس 70.2800 69.8700 90.3800 67.2200 19.8800 الجمعة 81.5300 74.6800 74.5100 93.1800 46.6000
في هذا المثال، دعونا نستورد البيانات من لوحة المفاتيح.
أكتب السطر التالي في لوحة المفاتيح-
Mathematics is simple
أنشئ ملف سكريبت وادخل الكود التالي-
A = importdata('-pastespecial')
عند تشغيل ملف، يظهر النتيجة التالية -
A = 'Mathematics is simple'
وظيفة importdata هي وظيفة متقدمة. تسمح وظائف I / O الأساسية في MATLAB بتحكم كبير في بيانات القراءة والكتابة في الملف. ولكن تحتاج هذه الوظائف إلى معلومات ملف أكثر تفصيلاً لتعمل بشكل فعال.
يقدم MATLAB وظائف التالية للقراءة والكتابة على مستوى البايت أو النص
الوظيفة | الوصف |
---|---|
fclose | إغلاق ملف أو جميع الملفات المفتوحة |
feof | اختبار نهاية الملف |
ferror | معلومات عن أخطاء I / O للملف |
fgetl | قراءة سطر من الملف، إزالة حرف النسخة المباشرة |
fgets | قراءة سطر من الملف، مع الحفاظ على حرف النسخة المباشرة |
fopen | فتح الملف أو الحصول على معلومات حول الملف المفتوح |
fprintf | كتابة البيانات في ملف نصي |
fread | قراءة البيانات من ملف ثنائي |
frewind | تحريك مؤشر الملف إلى بداية الملف المفتوح |
fscanf | قراءة البيانات من ملف نصي |
fseek | تحريك إلى موقع معين في الملف |
ftell | في موقع الملف المفتوح |
fwrite | كتابة البيانات في ملف ثنائي |
يقدم MATLAB وظائف التالية لاستيراد البيانات من ملفات البيانات النصية الأساسية-
fscanfالوظيفة تقرأ بيانات م格式ية من ملف نصي أو ملف ASCII.
fgetlوfgetsالوقت، حيث يفصل كل سطر من حرف النسخة المباشرة سطر الوظيفة التي تقرأ ملفها.
freadالوظيفة تقرأ بيانات تدفق في مستوى البايت أو النقاط
نحن نحفظ ملف بيانات نصية "myfile.txt" في مجلد العمل. يحتوي هذا الملف على بيانات أمطار لثلاثة أشهر؛ يونيو، يوليو وأغسطس من عام 2012.
ملف data.txt يحتوي على مجموعة قياسات متكررة لتوقيتات خمس مواقع والأشهر وكميات الأمطار. البيانات المقدمة تحتوي على عدد الشهور M؛ لذا لدينا M مجموعة قياسات.
يبدو هذا الملف كالتالي-
بيانات الأمطار الشهور: يونيو، يوليو، أغسطس M = 3 12:00:00 يونيو-2012 17.21 28.52 39.78 16.55 23.67 19.15 0.35 17.57 NaN 12.01 17.92 28.49 17.40 17.06 11.09 9.59 9.33 NaN 0.31 0.23 10.46 13.17 NaN 14.89 19.33 20.97 19.50 17.65 14.45 14.00 18.23 10.34 17.95 16.46 19.34 09:10:02 يوليو-2012 12.76 16.94 14.38 11.86 16.89 20.46 23.17 NaN 24.89 19.33 30.97 49.50 47.65 24.45 34.00 18.23 30.34 27.95 16.46 19.34 30.46 33.17 NaN 34.89 29.33 30.97 49.50 47.65 24.45 34.00 28.67 30.34 27.95 36.46 29.34 15:03:40 August-2012 17.09 16.55 19.59 17.25 19.22 17.54 11.45 13.48 22.55 24.01 NaN 21.19 25.85 25.05 27.21 26.79 24.98 12.23 16.99 18.67 17.54 11.45 13.48 22.55 24.01 NaN 21.19 25.85 25.05 27.21 26.79 24.98 12.23 16.99 18.67
سنقوم باستيراد البيانات من هذا الملف وعرض هذه البيانات. اتبع الخطوات التالية-
باستخدامfopenفتح الملف والحصول على معرف الملف.
لوصف البيانات في الملفمؤشر النمط،على سبيل المثال %s'يعني نص، %d'يعني عدد صحيح، أو %f'يعني عدد عشري.
لتجاوز الحروف النصية في الملف، شاملها في وصف النمط. لتجاوز حقل البيانات، استخدم علامة التعجب في المصدر.
على سبيل المثال، لقراءة العنوان وإرجاع قيمة M الواحدة، كتبنا هكذا-
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
بافتراض الافتراض،fscanfقراءة البيانات وفقًا لوصفنا الخاص، حتى لا يتم العثور على محتوى يتطابق مع البيانات أو وصول نهاية الملف. هنا، سنستخدم حلقة for لقراءة ثلاث مجموعات بيانات، وسنقرأ كل مرة سبعة أسطر وخمس أعمدة.
سنقوم بإنشاء مجال اسمهmydataهيكلية، لتحفظ البيانات التي يتم قراءتها من الملف. يتكون هذا الهيكل من ثلاثة حقول-time, monthو raindataالمجموعة.
إنشاء ملف سكريبت واكتب فيه ما يلي-
filename = '/data/myfile.txt'; rows = 7; cols = 5; %فتح الملف fid = fopen(filename); %قراءة رأس الملف، العثور على M (عدد الشهور) M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1); %قراءة كل مجموعة من البيانات القياس for n = 1:M mydata(n).time = fscanf(fid, '%s', 1); mydata(n).month = fscanf(fid, '%s', 1); %fscanf يملأ المатриس بترتيب العمودي %تحويل النتيجة إلى ماتريس mydata(n).raindata = ... fscanf(fid, '%f', [rows, cols]); end for n = 1:M disp(mydata(n).time), disp(mydata(n).month) disp(mydata(n).raindata) end %إغلاق الملف fclose(fid);
عند تشغيل ملف، يظهر النتيجة التالية -
12:00:00 يونيو-2012 17.2100 17.5700 11.0900 13.1700 14.4500 28.5200 NaN NaN 9.5900 NaN 14.0000 39.7800 12.0100 9.3300 14.8900 18.2300 16.5500 17.9200 NaN NaN 19.3300 10.3400 23.6700 28.4900 0.3100 20.9700 17.9500 19.1500 17.4000 0.2300 19.5000 16.4600 0.3500 17.0600 10.4600 17.6500 19.3400 09:10:02 يوليو-2012 12.7600 NaN NaN 34.0000 33.1700 24.4500 16.9400 24.8900 18.2300 NaN 34.0000 14.3800 19.3300 30.3400 34.8900 28.6700 11.8600 30.9700 27.9500 29.3300 30.3400 16.8900 49.5000 16.4600 30.9700 27.9500 20.4600 47.6500 19.3400 49.5000 36.4600 23.1700 24.4500 30.4600 47.6500 29.3400 15:03:40 August-2012 17.0900 13.4800 27.2100 11.4500 25.0500 16.5500 22.5500 26.7900 13.4800 27.2100 19.5900 24.0100 24.9800 22.5500 26.7900 17.2500 NaN 12.2300 24.0100 24.9800 19.2200 21.1900 16.9900 NaN 12.2300 17.5400 25.8500 18.6700 21.1900 16.9900 11.4500 25.0500 17.5400 25.8500 18.6700