new to matlab. trying to plot simple line and not successful from a script file!

1 view (last 30 days)
r=0.0;
z=0.1;
h=0.1;
for i=1:50
p=sqrt((1+(2*z*(r))^2)/((1+(r)^2)+(2*z*(r))))
r=r+h
end
plot(p,r)
title('tr function')
There is just a blank figure screen when i run this. help please!
  1 Comment
Abdullah Caliskan
Abdullah Caliskan on 18 Jan 2014
Edited: Walter Roberson on 18 Jan 2014
r=0:1:50;
z=0.1; h=0.1;
p=sqrt((1+(2.*z.*(r)).^2)./((1+(r).^2)+(2.*z.*(r))));
plot(p,r); title('tr function');
try this one

Sign in to comment.

Accepted Answer

Amit
Amit on 19 Jan 2014
Edited: Amit on 19 Jan 2014
Here you go:
h = 0.1;
r = 0:0.1:0.1*50;
z = 0.1:0.1:1;
fileID = fopen('my_p_data.txt', 'wt');
rr = {'b','r','k','g','-','--',':','-.','-k','--k'};
legstr = {};
for i = 1:numel(z)
p = sqrt((1+(2*z(i)*(r)).^2)./((1+(r).^2)+(2*z(i)*(r))));
fprintf(fileID,'%f\n', p);
plot(p,r,rr{i});
legstr{i}= ['Z = ' num2str(z(i))];
hold on;
end
fclose(fileID);
title('tr function')
legend(legstr);

More Answers (6)

Amit
Amit on 18 Jan 2014
Edited: Amit on 18 Jan 2014
This might work.
h = 0.1;
r = 0:0.1:0.1*50;
z = 0.1;
p = sqrt((1+(2*z*(r)).^2)./((1+(r).^2)+(2*z*(r))));
plot(p,r)
title('tr function')
The reason it was not plotting anything cause once you get out of the loop, you had a single value for p and r, and you cannot plot a line using a single value!

Praketa
Praketa on 18 Jan 2014
ok it worked but i wanted to know how we can use the fid() function, store data in txt file and reload to output while utilizing the loops. i have a c++ background so it is easier for me to follow that logic. the matrix operations are confusing for now.
and i also want to vary the z variable and from 0.1 to 1. if i use this then I am getting unmatched dimensions error.
i saw on some forum to load this data into txt file...does anybody know about that!
  4 Comments
Amit
Amit on 18 Jan 2014
Edited: Amit on 18 Jan 2014
h = 0.1;
r = 0:0.1:0.1*50;
z = 0.1:0.1:1;
fileID = fopen('my_p_data.txt', 'wt');
for i = 1:numel(z)
p = sqrt((1+(2*z(i)*(r)).^2)./((1+(r).^2)+(2*z(i)*(r))));
fprintf(fileID,'%f\n', p);
plot(p,r)
hold on;
end
fclose(fileID);
title('tr function')
In every loop, the new value of z (0.1,0.2 ... 1) is used.
and you can use Image Analyst way to store p generated in every loop.
Amit
Amit on 19 Jan 2014
h = 0.1;
r = 0:0.1:0.1*50;
z = 0.1:0.1:1;
fileID = fopen('my_p_data.txt', 'wt');
for i = 1:numel(z)
p = sqrt((1+(2*z(i)*(r)).^2)./((1+(r).^2)+(2*z(i)*(r))));
fprintf(fileID,'%f\n', p);
figure;
plot(p,r)
end
fclose(fileID);
title('tr function')

Sign in to comment.


Image Analyst
Image Analyst on 18 Jan 2014
Did you look at the documentation for fprintf. Here's an example:
x = 0:.1:1;
A = [x; exp(x)];
fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\n',A);
fclose(fileID);
For your case
fileID = fopen('my_p_data.txt', 'wt');
fprintf(fileID,'%f\n', p); % Write p out to a file.
fclose(fileID);

Praketa
Praketa on 19 Jan 2014
thank you much everybody for the help so far. but i wanted different graphs showing influence of z and the above code only outputs one graph!

Praketa
Praketa on 19 Jan 2014
Amit loads of thanks. but almost. can i have these figures all in in single figure. i want my students to see the relation. anyhow i can recommend ur skills I would be glad to.

Praketa
Praketa on 19 Jan 2014
u r awesome amit! thanks a ton!

Products

Community Treasure Hunt

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

Start Hunting!