سؤال

أريد حفظ مصفوفة إلى ملف نصي، حتى أتمكن من قراءته بواسطة برنامج آخر. الآن أستخدم:

save('output.txt', 'A','-ascii');

ولكن هذا يحفظ ملفي كما

6.7206983e+000  2.5896414e-001
6.5710723e+000  4.9800797e-00
6.3466334e+000  6.9721116e-001
5.9975062e+000  1.3346614e+000
6.0224439e+000  1.8127490e+000
6.3466334e+000  2.0517928e+000
6.3965087e+000  1.9721116e+000

ولكن أود أن أحييتهم دون "الترميز الإلكتروني" وليس بكل الأرقام. هل هناك طريقة سهلة للقيام بذلك؟

تحرير: شكرا لك! التي تعمل على ما يرام. آسف، لكنني أعتقد أنني افسدت تحريرك باستخدام التراجع.

هل كانت مفيدة؟

المحلول

أود استخدام fprintf وظيفة، والتي ستتيح لك تحديد لنفسك ما تنسجم إخراج البيانات في. فمثلا:

fid = fopen('output.txt', 'wt');
fprintf(fid,'%0.6f %0.6f\n', A.');
fclose(fid);

سيؤدي ذلك إلى إخراج المصفوفة A مع 6 أرقام من الدقة بعد النقطة العشرية. لاحظ أنه يجب عليك أيضا استخدام الوظائف fopen و fclose.

نصائح أخرى

Ditto Gnovice حل، إذا كنت بحاجة إلى أداء وتنسيق مخصص.

dlmwrite يمنحك بعض السيطرة (أساس عالمي، وليس لكل حقل) للتنسيق. لكنه يعاني من أداء أقل. ركضت اختبارا قبل بضع سنوات وكان DLMWRITE شيء يشبه 5-10x أبطأ من محلول FOPEN / FPRINTF / FCLOSE. (تحرير: أنا أشير إلى مصفوفات كبيرة، مثل مصفوفة 15x10000)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top