call recursive fun. erase txtfile

hi, I i have recursive function , each time call this function return different array.
I want to print these arrays into txt file, it is important to me store all arrays. But the problem each time is called function will erase the txtfile.
What I have to do to save all arrays?
THANKS IN ADVANCCE

 採用された回答

Jan
Jan 2012 年 9 月 7 日
編集済み: Jan 2012 年 9 月 7 日

0 投票

Main function, which opens and closes the file:
fid = fopen(FileName, 'w');
if fid == -1, error('Cannot open file'); end
Recursive(fid, 17);
fclose(fid);
And the recursice function:
function Recursive(fid, Num)
Num = Num - 1;
if Num == 0
return;
end
fprintf(fid, '%d\n', Num);
Recursive(Num);
end
Or you open the file in the recursive function for appending:
function Recursive(Num)
fid = fopen(FileName, 'a');
if fid == -1, error('Cannot open file'); end
fprintf(fid, '%d\n', Num);
fclose(fid);
Num = Num - 1;
if Num > 0
Recursive(Num);
end

4 件のコメント

huda nawaf
huda nawaf 2012 年 9 月 9 日
編集済み: huda nawaf 2012 年 9 月 9 日
thanks, jan, each time call function will return vector with different length.
i tried to use structure as output of function , but i failed.
i need save this vector .is it best to save inside function or in main program.
i think your code will also erase what wrote in previose call. i need a way by which I do not lost the previose return.
thanks
Jan
Jan 2012 年 9 月 10 日
You think that the code will erase the formerly written data? I suggest to try it instead. fopen(FileName, 'a') opens a file for appending...
huda nawaf
huda nawaf 2012 年 9 月 13 日
thanks i will try
huda nawaf
huda nawaf 2012 年 9 月 14 日
thanks jan, it is working now

サインインしてコメントする。

その他の回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2012 年 9 月 9 日

0 投票

maby your fclose(fid) is in the loop
fid = fopen('filename.txt', 'w');
for k=1:10
v=(1:k), %example
fprintf(fid, '%f\t',v);
fprintf(fid, '\n',[]);
end
fclose(fid);

5 件のコメント

huda nawaf
huda nawaf 2012 年 9 月 9 日
thanks, but i used recursive function. i want each time call this fun. do not loss the previose return . how can store the return values?
huda nawaf
huda nawaf 2012 年 9 月 9 日
this is my problem
I used recursive function F=devide() when run this function , the output:
cluster1 =
1 2 4 5
3 6 7 0
1 2 0 0
3 4 0 0
1 0 0 0
2 0 0 0
cluster1 =
1 2 4 5
3 6 7 0
1 2 0 0
3 4 0 0
1 0 0 0
2 0 0 0
cluster1 =
1 2 4 5
3 6 7 0
1 2 0 0
3 4 0 0
cluster1 =
1 2 4 5
3 6 7 0
F =
1 2 4 5
3 6 7 0
the problem in F , where F it must has the first array in output (6*4) and this array that must returned to main functon . But , in fact F has the last output the array 2*4. I can not control on output to make the last processing of array is what return to main program.
thanks
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 9 月 9 日
if you post your function, it will be helpfull
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 9 月 9 日
編集済み: Azzi Abdelmalek 2012 年 9 月 9 日
I think you can add this code inside your function just after cluster1
fprintf(fid, '%f\t',cluster1);
fprintf(fid, '\n',[]);
and call your function
fid = fopen('filename.txt', 'w');
F=devide();
fclose(fid);
huda nawaf
huda nawaf 2012 年 9 月 11 日
thanks, do u mean open file in main program?
I will try do that. if I failed , I will send my code.
thanks again

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

質問済み:

2012 年 9 月 7 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by