Where is the error in my code?
Show older comments
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
Accepted Answer
More Answers (2)
Les Beckham
on 7 Jun 2022
Edited: Les Beckham
on 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
1 Comment
Abdallah Qaswal
on 7 Jun 2022
The colon operator has a default spacing of 1.
r = 0:0.07
gives:
0,
% next value...
1 > 0.07 % so r = [0]
Use an intermediate step value, if you want:
r = 0:0.01:0.07;
or linspace
1 Comment
Abdallah Qaswal
on 7 Jun 2022
Categories
Find more on Line Plots 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!