3D point cloud

H
Hitesh P · Jan 11, 2022 · 2K views
Question
I am trying to get a 3D point cloud using the following code:   output_dir = 'C:\Users\Xyz\Desktop\Matlab'; %%set up webcam delete(imaqfind) leftCam = imaq.VideoDevice('winvideo', 2, 'YUY2_640x480'); rightCam = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480'); %%load stereo parameters if required if ~exist('stereoParams', 'var') load stereocalibration.m; end ax = axes; maxDepth = 5; clear maxdepth; while true imageLeft = step(rightCam); imageRight = step(leftCam); [J1, J2] = rectifyStereoImages(imageLeft, imageRight, stereoParams); disp = disparity(rgb2gray(J1), rgb2gray(J2), 'DisparityRange', [0, 112]); pointCloud = reconstructScene(disp, stereoParams) ./1000; z = pointCloud(:,:,3); z(z<0) = NaN; z(z>maxDepth) = NaN; pointCloud(:,:,3) = z; if ~ishandle(ax) break; else showPointCloud(pointCloud, J1, 'VerticalAxis', 'Y', 'VerticalAxisDir', 'Down', 'Parent', ax); xlabel('X (m)'); ylabel('Y (m)'); zlabel('Z (m)'); xlim(ax, [-.8, .8]); ylim(ax, [-.8, .8]); zlim([ax, maxDepth]); drawnow; end end release(leftCam); release(rightCam); ERROR:   Error using matlab.graphics.axis.Axes/horzcat Cannot convert double value 5 to a handle.   MATLAB R2015a  
Expert Answer
Profile picture of Prashant Kumar
Prashant Kumar PhD Expert
Answered Aug 20, 2026
You need to learn to use the debugger. Or you need to learn to provide sufficient information, with the complete error message that arose, so what line failed. However, I will hazard a guess that what you did was make a syntax error.
 
 
You form the variable ax as:
ax = axes.

When you do that in MATLAB, for example...

plot(1:5)
>> ax = axes
ax = 
  Axes with properties:

             XLim: [0 1]
             YLim: [0 1]
           XScale: 'linear'
           YScale: 'linear'
    GridLineStyle: '-'
         Position: [0.1300 0.1100 0.7750 0.8150]
            Units: 'normalized'

  Show all properties

As you can see, the result is a handle to the axes in a figure.

Then later on, you did this:

xlim(ax, [-.8, .8]);
ylim(ax, [-.8, .8]);
zlim([ax, maxDepth]);

Do you see that in the calls to xlim and ylim, you used one form, yet when you called ylim, for some reason, you did something completely different?

In fact, inside the call to zlim, you tried to catenate the number 5 to a graphics handle?

maxDepth = 5;

Now, go back and READ THE ERROR MESSAGE YOU GOT. maxdepth is the number 5.

100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!