create video of position from matrix

1 visualizzazione (ultimi 30 giorni)
I would like to plot the evolution of the positions of the nodes of my graph by extracting such informations from a matrix. I have tried with the following code:
nodesmatrix1=[100.930486523955,100.930575750737,100.930665005716,100.930754288889;...
0.537217125673953,0.537268640710124,0.537320172025868,0.537371719619598;...
0,0,0,0;...
-50,-50,-50,-50;...
87.6769342598990,87.6770372900756,87.6771403528114,87.6772434481033;...
0,0,0,0;...
-50,-50,-50,-50;...
-86.6025000000000,-86.6025000000000,-86.6025000000000,-86.6025000000000;...
0,0,0,0;...
-86.8313497413550,-86.8331653236005,-86.8349807356126,-86.8367959772504;...
50.8442720217766,50.8412459247854,50.8382199043914,50.8351939608639;...
202.668269119694,202.667265160646,202.666261247557,202.665257380501;...
0.313749463634742,0.317367162195871,0.320984737502106,0.324602189246993;...
-100.083107035647,-100.083114813157,-100.083122465259,-100.083129991967;...
202.668270199404,202.667266238431,202.666262323417,202.665258454434;...
87.4480844077347,87.4463715232573,87.4446586199985,87.4429456981209;...
50.8504867629172,50.8536751827095,50.8568634493359,50.8600515625364;...
202.668269910080,202.667265949606,202.666262035091,202.665258166609];
edge = [1 2;2 3;3 1;1 4;2 5;3 6];
type = [1; 1; 1; -1; -1; -1];
structure = VideoWriter('structure.avi');
open(structure);
for i = 1:4
EdgeTable = table(edge,type, ...
'VariableNames',{'EndNodes','type'});
structure=graph(EdgeTable);
nodestep=nodesmatrix1(:,i);
nodestepmatrix=[nodestep(1:3:length(nodestep))'; nodestep(2:3:length(nodestep))'; nodestep(3:3:length(nodestep))'];
p=plot(structure,'XData', nodestepmatrix(1,:), 'YData', nodestepmatrix(2,:),'ZData',nodestepmatrix(3,:));
frame = getframe(gcf);
writeVideo(structure,frame);
end
close(structure);
But it doesn't work. I obtain only the plot of the last column of nodesmatrix1.
What is wrong?

Risposta accettata

Sai Bhargav Avula
Sai Bhargav Avula il 20 Feb 2020
Hi,
There is a small change that needs to be done. The input to the writeVideo has to be a VideoWriter object, in your case the structure has to be a VideoWriter object. But it is being set to a graph in the for loop
structure=graph(EdgeTable);
Try not to overwrite this. Also, there are no significant change in the column values of nodesmatrix1 which is resulting in the same image in frame this is reason why it might appear that only the plot of the last column of nodesmatrix1 is being captured.
Hope this helps!

Più risposte (0)

Tag

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by