Where is the error in my code?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Abdallah Qaswal
am 7 Jun. 2022
Kommentiert: Voss
am 7 Jun. 2022
I am trying to plot three variables Q,R,W using surf function, but I get this error message : Error using surf (line 71)
Z must be a matrix, not a scalar or vector.
Error in time1 (line 13)
surf(R,W,Q)
here is my code that I am trying to run:
r = 0:0.07;
w = 0:4;
[R,W] = meshgrid(r,w);
V1 = @(R,W) -acosh(10*(W./(1600*R + 21))^(1/2))/20000000000
V2 = @(R,W) acosh(10*(W./(1600*R + 21))^(1/2))/20000000000
fun = @(x,R,W)0.0018./((W./((cosh(10^10.*x./0.5)).^2)-(R.*16+0.21)).^0.5);
q = @(R,W) integral(@(x)fun(x,R,W),V1(R,W),V2(R,W));
Q = arrayfun(q,R,W)
surf(R,W,Q)
where is the error, please?
Many thanks
0 Kommentare
Akzeptierte Antwort
Voss
am 7 Jun. 2022
Check the value of r:
r = 0:0.07
It is a scalar wth value 0 because the colon operator ":" uses an increment of 1 by default. Since 0.07 - 0 < 1, you get just 0.
Perhaps you meant to use a smaller increment:
r = 0:0.01:0.07
Then the rest of the code runs:
w = 0:4;
[R,W] = meshgrid(r,w);
V1 = @(R,W) -acosh(10*(W./(1600*R + 21))^(1/2))/20000000000;
V2 = @(R,W) acosh(10*(W./(1600*R + 21))^(1/2))/20000000000;
fun = @(x,R,W)0.0018./((W./((cosh(10^10.*x./0.5)).^2)-(R.*16+0.21)).^0.5);
q = @(R,W) integral(@(x)fun(x,R,W),V1(R,W),V2(R,W));
Q = arrayfun(q,R,W);
surf(R,W,Q)
2 Kommentare
Weitere Antworten (2)
Les Beckham
am 7 Jun. 2022
Bearbeitet: Les Beckham
am 7 Jun. 2022
You need to specify an increment size if you expect r to be a vector. Currently it is a scalar equal to zero. Q will not be a 2d array if r is a scalar. Thus the error from surf.
r = 0:0.07
Maybe you want something like this?
r = 0:0.01:0.07
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!