A figure created within a for loop is not plotted (only the last one is shown)

조회 수: 2 (최근 30일)
Hello! I have the code attached.
A figure created within a for loop (fig_2.png) is not plotted (only the last one figure is shown -> fig_5.png).
I would like to get the figure on the left (see bottom) but I actually get the figure on the right, that is, it is missing the plotting of a curve (fig_2.png).
  댓글 수: 3
Alberto Acri
Alberto Acri 2022년 12월 5일
Hi! The codes are all there. What do you need? 'CoordinateMatrix' are two rx2 double matrices that I have no way to attach because I have already attached other files.
Mathieu NOE
Mathieu NOE 2022년 12월 5일
you can avoid the 10 files attachment limit by zipping all files , then you have again room for attaching 'CoordinateMatrix' data

댓글을 달려면 로그인하십시오.

채택된 답변

Mathieu NOE
Mathieu NOE 2022년 12월 5일
hello again
so there was some figure calls still present in some functions (fun1, fun2 ,...)
I cleaned that so you have only the 3D plot
check the updates in the zip attached
I created a function "codeMN.m" that I used for this correction, but you should use "code.m" on your side
hope it helps
  댓글 수: 7
Mathieu NOE
Mathieu NOE 2022년 12월 5일
편집: Mathieu NOE 2022년 12월 5일
in this case what is the array CoordinateMatrix ?
I assume it's empty so you have to make a test if CoordinateMatrix is empty or not
so your main loop in code.m should include this test :
for k = 1:length(imageFiles)
baseFileName = imageFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
imageArray = imread(fullFileName);
imageArray1 = im2uint8(imageArray);
drawnow;
CoordinateMatrix = pic2points(imageArray1);
if ~isempty(CoordinateMatrix) % HERE
%======================================================
% check this part
X = CoordinateMatrix;
matrix_points = function_main(X);
%=======================================================
% Switch to the figure for the 3-D plotting:
figure(hFig3);
current_z = z(k) * ones(size(matrix_points, 1), 1);
plot3(matrix_points(:, 1), matrix_points(:, 2), current_z, 'k.');
hold on
%drawnow;
end
end

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jiri Hajek
Jiri Hajek 2022년 12월 5일
Hi, you need to use the hold function after you display the first curve.

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by