2016-07-21 2 views
0

Новое в Matlab! Я занимаюсь этим открытым исходным кодом, чтобы сделать то, что я хочу, и это так, но не так, как я этого хочу. Мне просто нужна помощь в этом.Matlab: Сохранение данных в матрице

Это то, что я до сих пор:

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 

Он печатает расстояния, а затем, в последующем коде это участки пути.

Итак, вот моя проблема. Он печатает 12000+ расстояний, соответствующих каждому из моих «источников», но мне нужно только расстояние между 10 источниками и 12 пунктами назначения на моей сетке, заданное вершинами и гранями. Как я могу заставить его распечатать 120 расстояний, о которых я забочусь, и хранить их в матрице?

+0

См. Здесь: [link] (http://stackoverflow.com/questions/32379805/linear-indexing-logical-indexing-and-all-that) и здесь: [link] (http: //www.mathworks .com/компании/информационные бюллетени/статьи/матрица индексации в-matlab.html). – Rotem

ответ

0

В MATALB, если вы не помещаете точку с запятой в конце вашего оператора, то вывод этой инструкции печатается на консоли. Итак, ваше следующее заявление:

[source_id, distances] = geodesic_distance_and_source(algorithm) 

не имеет точки с запятой. Я подозреваю, что там вы видите 12000 расстояний.

Чтобы ответить на ваш второй вопрос: у меня недостаточно информации о структуре матрицы distances. Я думаю, вы можете использовать индексирование, чтобы узнать расстояние между источником m и пунктом назначения n как distances(m,n). Вот как обычно структурируются матрицы расстояний, но я не могу сказать точно.

Смежные вопросы