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

6 visualizzazioni (ultimi 30 giorni)
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 Commento
Abdullah Caliskan
Abdullah Caliskan il 18 Gen 2014
Modificato: Walter Roberson il 18 Gen 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

Accedi per commentare.

Risposta accettata

Amit
Amit il 19 Gen 2014
Modificato: Amit il 19 Gen 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);

Più risposte (6)

Amit
Amit il 18 Gen 2014
Modificato: Amit il 18 Gen 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 il 18 Gen 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 Commenti
Amit
Amit il 18 Gen 2014
Modificato: Amit il 18 Gen 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 il 19 Gen 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')

Accedi per commentare.


Image Analyst
Image Analyst il 18 Gen 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 il 19 Gen 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 il 19 Gen 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 il 19 Gen 2014
u r awesome amit! thanks a ton!

Categorie

Scopri di più su 2-D and 3-D Plots in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by