How do I export the calculations of a textfile?

조회 수: 4 (최근 30일)
Eneru Y
Eneru Y 2017년 3월 22일
댓글: Walter Roberson 2017년 3월 22일
I have to export to a file all the values of variables X and Y.
A = 10:0.1:100;
B = 100:1:1000;
C = 1:0.01:10;
X = A .* B;
Y = (A ./ B) .* C;
i.e. the X and Y values for each value of A, B and C. I've tried with
M = [ X ; Y ];
nomefile = fopen ( 'FILE.txt' , 'a');
fprintf ( nomefile , '%16.15E %16.15E\r\n' , M );
fclose (nomefile);
but I got a mess. I was supposed to get a file with 7.29E+08 lines, but I got a much smaller file with wrong values. Thank you!
  댓글 수: 7
Stephen23
Stephen23 2017년 3월 22일
편집: Stephen23 2017년 3월 22일
"Thus X column = 811,801 rows and Y column = 731,432,701 rows"
Nope, not even close:
>> size(X)
ans =
1 901
>> size(Y)
ans =
1 901
If you want matrix multiplication then you need to use the correct operator. If you want all permutations then use bsxfun, although you will likely run out of memory.
Walter Roberson
Walter Roberson 2017년 3월 22일
Using ndgrid or bsxfun runs out of memory on my machine.
Also, 901*901 is odd, so it is not clear how one would write it out as two columns? Two in which order? Should the last of the rows have only one entry?

댓글을 달려면 로그인하십시오.

답변 (1개)

Eneru Y
Eneru Y 2017년 3월 22일
I think I found the solution:
for A = 10:0.1:100
for B = 100:1:1000
for C = 1:0.01:10
X = A * B;
Y = (A / B) * C;
U = [ X ; Y ];
fid = fopen('FILE.txt','a');
fprintf(fid,'%16.15E %16.15E\r\n', U );
fclose(fid);
end
end
end
This way it works. Thanks anyway!
  댓글 수: 2
Stephen23
Stephen23 2017년 3월 22일
편집: Stephen23 2017년 3월 22일
It would be much better to open the file before and after the loop, use w to write to a cleared file, and use the t option (because this handles newlines correctly):
fid = fopen('FILE.txt','wt');
for ...
....
fprintf(fid,'%16.15E %16.15E\n', U );
end
fclose(fid);
Eneru Y
Eneru Y 2017년 3월 22일
Thank you!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Low-Level File I/O에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by