I got an errow while plotting 3D surface
조회 수: 1 (최근 30일)
이전 댓글 표시
Imported the data from excel and the below are my vectors.
Pa 267751x1 2142008 double
Pb 267751x1 2142008 double
Profit 267751x1 2142008 double
When I type surf(Pa,Pb,Profit), I got this error message: Z must be a matrix, not a scalar or vector.
Anyone knows how can I fix this?
댓글 수: 2
Geoff Hayes
2015년 1월 17일
Sercan - please describe your data and why you are attempting to plot it all as a 3D surface? The error message is pretty clear on the problem - the third input Profit must be a matrix. Given your dimensions from above, and according to surf, the third input must be a 267751x267751 matrix.
채택된 답변
Roger Stafford
2015년 1월 18일
If I understand you correctly, the matlab 'surf' function is not the right one for your problem, since it would require that your 'Profit' variable be a two-dimensional matrix. I think the best you can do is to use 'plot3' with the "LineSpec" argument set to produce point displays, not lines between points:
plot3(Pa,Pb,Profit,'.')
This will give you a single dot for each triplet of corresponding values of Pa, Pb, and Profit.
It will be a little more difficult to interpret than a plot by 'surf' because the lines connecting neighboring dots are not plotted, but unfortunately your data is not in a form that would allow this to be done conveniently. To see why this is so, read the documentation for 'surf'. At one point it states: "The height, Z, [the third argument] is a single-valued function defined over a geometrically rectangular grid." It is this grid nature of the input that allows 'surf' to draw the connecting lines, and which is missing in your data.
댓글 수: 2
Star Strider
2015년 1월 18일
I usually prefer stem3 for discrete 3D plots, because it directly connects the x, y, and z values for each triplet. However, since there are 2E+6 data triplets, that might be a less attractive option here.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Line Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!