2016-07-21 20 views
0

Neu bei Matlab! Ich habe mit diesem Open-Source-Code rumgespielt, damit er macht, was ich will und tut, aber nicht so, wie ich es möchte. Ich brauche nur etwas Hilfe, die das einpackt. DieseMatlab: Daten in einer Matrix speichern

ist das, was ich bisher:

clear 

global geodesic_library;     
geodesic_library = 'geodesic_debug';  %"release" is faster and "debug" does additional checks 
rand('state', 0);       %comment this statement if you want to produce random mesh every time 

load V3_Elements4GeodesicD.k 
load V3_Nodes4GeodesicD.k 

vertices = V3_Nodes4GeodesicD (:, [2 3 4]); 
faces = V3_Elements4GeodesicD (:, [3 4 5]); 

N = 12240;         %number of points in a mesh 

mesh = geodesic_new_mesh(vertices,faces);   %initilize new mesh 
algorithm = geodesic_new_algorithm(mesh, 'exact');  %initialize new geodesic algorithm 

vertex_id = 6707 ;        %create a single source at vertex #1 
source_points = {geodesic_create_surface_point('vertex',vertex_id,vertices(vertex_id,:))}; 

geodesic_propagate(algorithm, source_points); %propagation stage of the algorithm (the most time-consuming) 

vertex_id = 12240;        %create a single destination at vertex #N 
destination = geodesic_create_surface_point('vertex',vertex_id,vertices(vertex_id,:)); 
path = geodesic_trace_back(algorithm, destination);  %find a shortest path from source to destination 

distances = zeros(N,1);    %find distances to all vertices of the mesh (actual pathes are not computed) 
[source_id, distances] = geodesic_distance_and_source(algorithm) %find distances to all vertices of the mesh; in this example we have a single source, so source_id is always equal to 1 

geodesic_delete;       %delete all meshes and algorithms 

Er druckt Entfernungen und dann in nachfolgenden Code, zeichnet es den Weg.

Also hier ist mein Problem. Es druckt 12000+ Entfernungen aus, die jeder meiner "Quellen" entsprechen, aber ich interessiere mich nur für Abstände zwischen 10 Quellen und 12 Zielen auf meinem Netz, die durch Scheitelpunkte und Flächen gegeben sind. Wie kann ich die 120 Entfernungen drucken, die mir wichtig sind, und sie in einer Matrix speichern?

+0

Siehe hier: [link] (http://stackoverflow.com/questions/32379805/linear-indexing-logical-indexing-and-all-that) und hier: [link] (http: //www.mathworks .com/company/newsletters/artikel/matrix-indexing-in-matlab.html). – Rotem

Antwort

0

Wenn Sie in MATALB kein Semikolon am Ende Ihrer Anweisung einfügen, wird die Ausgabe dieser Anweisung auf der Konsole ausgegeben. Also, Ihre folgende Aussage:

[source_id, distances] = geodesic_distance_and_source(algorithm) 

hat kein Semikolon. Ich vermute, dass dort 12000 Entfernungen ausgedruckt werden.

Um Ihre zweite Frage zu beantworten: Ich habe nicht genug Informationen über die Struktur der Matrix distances. Ich denke, dass Sie Indizierung verwenden können, um die Entfernung zwischen Quelle m und Ziel n als distances(m,n) herauszufinden. Normalerweise sind Distanzmatrizen strukturiert, aber ich kann das nicht sicher sagen.