You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: prim_mst.m
    path of file: ./repos/matGeom/matGeom/graphs
    
    the code of the file until where you have to start completion: function varargout = prim_mst(edges, vals)
%PRIM_MST Minimal spanning tree by Prim's algorithm.
%
%   EDGES2 = prim_mst(EDGES, WEIGHTS)
%   Compute the minimal spanning tree (MST) of the graph with edges given
%   by EDGES, and using the specified edge weights.
%   The nodes of the resulting tree are the same as the nodes of the
%   original graph. Therefore, the function requires only to specify edges.
%
%   Example
%     pts = load('sedgewick_points.txt');
%     [nodes, edges] = delaunayGraph(pts);
%     figure; drawGraphEdges(nodes, edges, 'color', 'k');
%     axis equal; axis([10 27 10 27]); hold on;
%     weights = grEdgeLengths(nodes, edges);
%     edges2 = prim_mst(edges, weights);
%     drawGraphEdges(nodes, edges2, 'linewidth', 2, 'color', 'b');
%   
%   See also 
%     euclideanMST, grEdgeLengths
%

% ------
% Author: David Legland
% E-mail: david.legland@inrae.fr
% Created: 2007-07-27, using Matlab 7.4.0.287 (R2007a)
% Copyright 2007-2023 INRA - BIA PV Nantes - MIAJ Jouy-en-Josas

% isolate vertices index

    
function varargout = prim_mst(edges, vals)
%PRIM_MST Minimal spanning tree by Prim's algorithm.
%
%   EDGES2 = prim_mst(EDGES, WEIGHTS)
%   Compute the minimal spanning tree (MST) of the graph with edges given
%   by EDGES, and using the specified edge weights.
%   The nodes of the resulting tree are the same as the nodes of the
%   original graph. Therefore, the function requires only to specify edges.
%
%   Example
%     pts = load('sedgewick_points.txt');
%     [nodes, edges] = delaunayGraph(pts);
%     figure; drawGraphEdges(nodes, edges, 'color', 'k');
%     axis equal; axis([10 27 10 27]); hold on;
%     weights = grEdgeLengths(nodes, edges);
%     edges2 = prim_mst(edges, weights);
%     drawGraphEdges(nodes, edges2, 'linewidth', 2, 'color', 'b');
%   
%   See also 
%     euclideanMST, grEdgeLengths
%

% ------
% Author: David Legland
% E-mail: david.legland@inrae.fr
% Created: 2007-07-27, using Matlab 7.4.0.287 (R2007a)
% Copyright 2007-2023 INRA - BIA PV Nantes - MIAJ Jouy-en-Josas

% isolate vertices index
nodes   = unique(edges(:));
N       = length(nodes);

% initialize memory
nodes2  = zeros(N, 1);
edges2  = zeros(N-1, 2);
vals2   = zeros(N-1, 1);

% initialize with a first node
nodes2(1)   = nodes(1);
nodes       = nodes(2:end