Save Output in Text File

السلام عليكم ورحمة الله وبركاته

لو سمحتم لدي استفسار بسيط عن دالة تقوم بحفظ المخرجات

سواء كانت على شكل مصفوفة أو على شكل نص في ملف نصي

وجدت أكثر من خوارزمية لكن عند تطبيقها يتم حفظ رموز غير صحيحة داخل الملف

انا في حاجة لمعرفة هذا الامر بأسرع وقت

وكل أملي تعاونكم معي

وشكرا جزيلا

اولا قم بعمل ملف نصى على الهارد ديسك وليكن اسمه
almohandes.txt

استخدام الامر الاتى لفتح الملف

fid = fopen(filename, permission)

مثال

FID = fopen('almohandes.txt','w');

وتعنى ان لديك تصريح الكتابة على هذا الملف

ثم الكتابه على الملف المفتوح

count = fprintf(fid, format, A, ...)

مثال


link = 'www.almohandes.org';
fprintf(FID,'%s',link)

وفى النهاية اغلاق الملف

status = fclose(fid)

وهذا المثال كامل


FID = fopen('almohandes.txt','w');
link = 'www.almohandes.org';
fprintf(FID,'%s',link)
fclose(FID)

شكرا لك أستاذ أحمد على ردك …

لقد جربت الكود وهو يعمل بشكل صحيح

لكن عندما أريده أن يقوم بحفظ قيمة متغير

او ناتج شبكة

يظهر لي داخل الملف النصي بعد الحفظ مربعات فارغة

a

وهنا تكمن المشكلة

ولك الشكر الجزيل

ممكن ترسلى الكود الذى تحاول تطبيقه فى الملف النصى الذى تحاول الحفظ فيه ؟

[LEFT][

alphabet,targets] = prprob; %Built in data set in Matlab
plotletters(alphabet); %We wrote this function to display the characters
net = newff(minmax(alphabet),[10 26],{'logsig' 'logsig'},'traingdx');
%These values are set to give better training results (initialization of
%the weights and biases should be small here)
net.LW{2,1} = net.LW{2,1}*0.01;
net.b{2} = net.b{2}*0.01;
net.performFcn = 'sse'; % Sum-Squared Error performance function
net.trainParam.goal = 0.1; % Sum-squared error goal.
net.trainParam.show = 20; % Frequency of progress displays (in epochs).
net.trainParam.epochs = 5000; % Maximum number of epochs to train.
net.trainParam.mc = 0.95; % Momentum constant.

% Training begins...please wait...
P = alphabet;
noisyP=alphabet+randn(size(alphabet))*0.4;
T = targets;
[net,tr] = train(net,P,T);
[net,tr] = train(net,noisyP,T);
%Test on new noisy data
noisyP = alphabet+randn(size(alphabet)) *0.05;
plotletters(noisyP);
A2 = sim(net,noisyP);
for j=1:26 %Number of noisy letters
A3 = compet(A2(:,j));
answer(j) = find(compet(A3) == 1);
end
NetLetters=alphabet(:,answer);
plotletters(NetLetters

);

[RIGHT]على سبيل المثال اريد حفظ الـ net وأريد حفظ الـ answer

ما الدوال التي علي استخدامها ؟

[/right]
[/left]

??? Undefined function or method ‘plotletters’ for input arguments of type ‘double’.

[LEFT]function plotletters(alphabet);
[m,n]=size(alphabet);
if m~=35
error('plotletters needs columns 35 numbers long');
end
figure
MM=colormap(gray);
MM=MM(end:-1:1,:);
colormap(MM);
nn=min([n,26]);
for j=1:nn
subplot(2,13,j)
imagesc(reshape(alphabet(:,j),5,7)');
axis equal
axis off
end

[/left]

طبعا مش هتقدر تحفظ الشبكة العصبية كلها مرة واحدة
??? Error using ==> fprintf
Function is not defined for ‘network’ inputs.

لكن ممكن تعملها جزء جزء زى كده ودا اشتغل معايا تمام بدون اى مشاكل


FID = fopen('almohandes.txt','w');
fprintf(FID,'%s',net.performFcn)
fclose(FID)

وايضا

FID = fopen('almohandes.txt','wt');
fprintf(FID,'%6.2f %12.8f
',answer)
fclose(FID)
>> type almohandes.txt

  1.00   2.00000000
  3.00   4.00000000
  5.00   6.00000000
  7.00   8.00000000
  9.00  10.00000000
 11.00  12.00000000
 13.00  14.00000000
 15.00  16.00000000
 17.00  18.00000000
 19.00  20.00000000
 21.00  22.00000000
 23.00  24.00000000
 25.00  26.00000000

شكرا جزيـــــــــــــلا يا مهندس أحمد

ربي يجزاك ألف خير

في ميزان حسناتك يارب

طبقته وضبط معاي الحمد لله

العفو اخى واذا لم يمكن لديك نرجو مشروعك فى المنتدى قد يكون مفيدا للاخرين وخاصا فى مجال الشبكات العصبية