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

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
Alberto Acri
Alberto Acri il 5 Dic 2022
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 il 5 Dic 2022
you can avoid the 10 files attachment limit by zipping all files , then you have again room for attaching 'CoordinateMatrix' data

Accedi per commentare.

Risposta accettata

Mathieu NOE
Mathieu NOE il 5 Dic 2022
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 Commenti
Mathieu NOE
Mathieu NOE il 5 Dic 2022
Modificato: Mathieu NOE il 5 Dic 2022
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

Accedi per commentare.

Più risposte (1)

Jiri Hajek
Jiri Hajek il 5 Dic 2022
Hi, you need to use the hold function after you display the first curve.

Categorie

Scopri di più su Graphics Performance in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by