Clear Filters
Clear Filters

Problem with fprintf

4 views (last 30 days)
inci
inci on 28 May 2012
Hi All,
I am having a trouble with fprintf and I would so much appreaciate if you could help me: In the programme on which I am working now, I am tracking the mouse position when the mouse is clicked using get(gca, ‘currentpoint’) and then I save the final position using fprintf. Everything works smoothly when I do not define a particular axis position in the figure window; however when I use set(gca, ‘visible’, ‘off’, ‘position’, ‘[]) command to define a particular axis position, fprintf sometimes writes down a string, either K or á, on the text file, which then gives the obvious error with the dlmread when the file is tried to be read. I wonder what might be the cause of those strings on the text file.
Thank you very much,
inci
  4 Comments
Oleg Komarov
Oleg Komarov on 28 May 2012
We don't even know the syntax you're using for fprintf!
Summarizing a problem is part of being a good programmer. Not being able to do so, means you don't have all the relevant aspects under control. It's not a critic, it's a state that we've all been through. You can try to deal it by yourself or you can ask for help (and I would always encourage the latter) but it should be done properly.
A wild guess:
>> fprintf('%s\n','224')
224
>> fprintf('%s\n',224)
à
inci
inci on 28 May 2012
Thanks... My syntax is:
mouse = get(gca,'currentpoint');
A=mouse(1,1); B=mouse(1,2);
save x_center4.txt A -ascii;
save y_center4.txt B -ascii;
A=load('C:\MATLAB6p5\work\x_center4.txt');
B=load('C:\MATLAB6p5\work\y_center4.txt');
fid=fopen('grand_xcenter4.txt','a');
fid2=fopen('grand_ycenter4.txt', 'a'); fprintf(fid,'%s %d\n',A);
fprintf(fid2,'%s %d\n',B); fclose(fid); fclose(fid2);
I guess your suggestion could well be the reason. I am trying to fix my code.

Sign in to comment.

Answers (1)

Oleg Komarov
Oleg Komarov on 28 May 2012
Transpose A and B:
fprintf(fid,'%s %d\n',A');
fprintf(fid,'%s %d\n',B');
As I understand, you saved two columns, respectively of strings and of numbers. However, fprintf() will process A and B along the first dimension (rows) and will switch to the second one only once the first is over.
To be more clear, I think you expect that frpintf will take a string, than a number, then will go to row 2 and repeat the same, but the default behaviour is to go down till the end THEN switch to the second column, thus you need to transpose.
  3 Comments
inci
inci on 28 May 2012
Shall I convert the double arrays (obtained from the load command) to cell before feeding them to fprint?
Oleg Komarov
Oleg Komarov on 28 May 2012
fprintf() doesn't accept cell arrays.
As I say above, transpose your A (whatever you called) when it has multiple rows.

Sign in to comment.

Categories

Find more on Large Files and Big Data in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!