Plotting help
古いコメントを表示
Hi, I'm pretty new to Matlab, and I tried to execute this script:
eq1 = '((((1.5-(x-(i*(y))))/(1.5+(x-(i*(y)))))+((((x-(i*y))-((3.46163-(i*(0)))))/((x-(i*(y)))+(3.46163-(i*(0)))))*(exp(-2*i*((pi*2)/1796)*(x-(i*(y)))*z))))/(1+(((1.5-(x-(i*(y))))/(1.5+(x-(i*(y)))))*(((x-(i*(y)))-(3.46163-(i*(0))))/((x-(i*(y)))+(3.46163-(i*(0)))))*(exp(-2*i*((pi*2)/1796)*(x-(i*(y)))*z)))))-.30441';
eq2 = '((((1.5-(x-(i*(y))))/(1.5+(x-(i*(y)))))+((((x-(i*y))-((3.46153-(i*(0)))))/((x-(i*(y)))+(3.46153-(i*(0)))))*(exp(-2*i*((pi*2)/1798)*(x-(i*(y)))*z))))/(1+(((1.5-(x-(i*(y))))/(1.5+(x-(i*(y)))))*(((x-(i*(y)))-(3.46153-(i*(0))))/((x-(i*(y)))+(3.46153-(i*(0)))))*(exp(-2*i*((pi*2)/1798)*(x-(i*(y)))*z)))))-.30440';
eq3 = '((((1.5-(x-(i*(y))))/(1.5+(x-(i*(y)))))+((((x-(i*y))-((3.46143-(i*(0)))))/((x-(i*(y)))+(3.46143-(i*(0)))))*(exp(-2*i*((pi*2)/1800)*(x-(i*(y)))*z))))/(1+(((1.5-(x-(i*(y))))/(1.5+(x-(i*(y)))))*(((x-(i*(y)))-(3.46143-(i*(0))))/((x-(i*(y)))+(3.46143-(i*(0)))))*(exp(-2*i*((pi*2)/1800)*(x-(i*(y)))*z)))))-.30439';
ezplot(eq1), hold on;
ezplot(eq2), hold on;
ezplot(eq3), hold off;
but it didn't work (some of you want to sternly tell me off right now, I know). Here is the error message:
??? Error using ==> char
Cell elements must be character arrays.
Error in ==> ezplot at 158
fmsg = char(f);
Error in ==> nonlintest2 at 4
ezplot(eq1), hold on;
Error in ==> run at 74
evalin('caller',[script ';']);
So, as a new user, I don't know how to use this error report very well, and looking online has gotten me some approximate info, but nothing that truly explains my situation to me. Can anyone help me with this please? I'd love to learn how to make this work.
2 件のコメント
the cyclist
2011 年 9 月 28 日
Why did you enclose eq1, etc., in single quotes?
Fangjun Jiang
2011 年 9 月 28 日
@cyclist, to use ezplot()
回答 (1 件)
Walter Roberson
2011 年 9 月 28 日
1 投票
It is a bug in ezplot in constructing the error message to tell you that ezplot cannot be used to plot equations in more than 2 variables.
8 件のコメント
Alex
2011 年 9 月 28 日
Walter Roberson
2011 年 9 月 28 日
If you really wanted to, you could edit ezplot() so that you change line 158 to
if isa(f{1},'inline'); fmsg = char(f{1}); else fmsg = char(f); end
Of course all that will do is enable the program to reach the correct error() message; you would still need to adjust your program to try/catch to account for the possibility of that error.
Alex
2011 年 9 月 29 日
Walter Roberson
2011 年 9 月 29 日
It means that you should not use ezplot() to plot a function with three or more variables. Your equations all obviously involve x and y, and each of them has a single occurrence of z (which you can see near the beginning of the third text line of each, above.)
Perhaps you should double-check that you have not made an error in transcribing the equations: perhaps that z is intended to be x or y.
Alex
2011 年 10 月 1 日
Walter Roberson
2011 年 10 月 2 日
You are expecting to be able to create a graphical representation of something that involves a symbolic constant? And over a complex field? You do realize that the graphs are non-linear in z, so it isn't even as simple as drawing a graph and adding a "multiplied by z" notation to it?
Perhaps it would make sense to substitute a specific value in for z before attempting the plot? You could do that with
eq1a = strrep(eq1,'z','1.234987');
and plotting that ?
Walter Roberson
2011 年 10 月 2 日
Those equations are difficult to solve, even individually by substituting values in to free variables.
Alex
2011 年 10 月 3 日
カテゴリ
ヘルプ センター および File Exchange で Annotations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!