2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Автоматизация процесса построения сетки в MATLAB
Сообщение04.05.2021, 18:11 
Здравствуйте, уважаемые форумчане! Третий день бьюсь над решением проблемы, и никак не получается ее решить. 

Суть такова: необходимо построить сетку, и провести процесс коррекции (но это сейчас не столь принципиально). Проблема заключается в следующем: кривые, которые образуют сетку задаются с помощью вызова функции CoordTransform, она работает таким образом, что на выходе возвращает 6 параметров, каждый вызов этой функции дает при каждом фиксированной координате, кривую, например, вызов функции Tr1_0(i,:)=CoordTransform(q1,0); позволяет строить кривую  изменяющейся с определенным шагом по координате q1, но для постоянной q2 - const (нулю в данном случае). Аналогично и с функцией Tr2_0(i,:)=CoordTransform(0,q2).

Одна кривая горизонтальная, вторая - вертикальная, если говорить наиболее просто. В результате необходимо построить, получить сетку. 

Если проводить вызов вручную, т.е прописывать каждый раз вызов CoordTransform и передавать в нее значения самому прописывать, 0,1..5, то в принципе это нормально, но когда надо строить сетку от 0 до 10 с шагом например 0,01, то вручную это делать уже тяжело. 

Если раскоментировать содержимое файла coord_curves3.m то эту сетку можно построить, в этом случае, для каждой траектории Tr1_(:,1),Tr1_(:,2) выводить первый и второй столбец, аналогично и для Tr2_(:,1),Tr2_(:,2), тогда получаем такую картинку:

Изображение                                       

Мне нужно автоматизировать процесс построения такой сетки, чтобы не вручную вызывать и передавать параметр для построения трека (кривой), а просто некоторым циклом, чтобы в одном массиве были треки Tr1_i а в другом Tr2_i, и т.е каждый вызов функции построения кривой, можно было вызывать несколько раз и в зависимости от переданной из диапазона q=const, т.е передаем в качестве константы q2 с шагом 0 : .05 :10,  и соответсвенно каждый раз происходит вызов
Используется синтаксис Matlab M
Tr1[i](i,:) = CoordTransform(q1,q2);
 

т.е надо организовать вызов функций таким образом, чтобы все эти Tr1_i и Tr2_i не приходилось прописывать вручную, как это в файле скрипта...

Для это я написал automate_Tr1() и  automate_Tr2(), в них передаю значения q - const для каждой кривой, т.е сначала кривая Tr1(q1,q2 - const), где const последовательно при каждом вызове пробегает значения 0 : .05 :10 к примеру. И пытаюсь организовать вызов для записи в массив каждого трека, чтобы потом с помощью цикла построить такую сетку:

Используется синтаксис Matlab M
for i=2:Nc
 
   plot(Tr1(i,:,1),Tr1(i,:,2),Tr2(i,:,1),Tr2(i,:,2))
   
end
 


Однако, при вызове 

Используется синтаксис Matlab M
for qq2 = 0:.05:10
   
Ts = automate_Tr1(qq2);  
 
end
 


просто все время получаю только значение для кривой, когда в нее передан последний элемент диапазона переменной qq2.

Уже почти 3 дня я пытаюсь это сделать и никак не могу понять, что я делаю не так, какой строчки кода не хватает, может я неправильно организую индексацию, в чем может быть проблема??  

Я просто уже не знаю, что делать... Буду благодарен, за оказанную помощь! Все файлы в архиве, доступные по ссылке:
https://drive.google.com/file/d/1j8t4dmOpPI4eMZDP46ePtudKhBMR2tyi/view?usp=sharing

 
 
 
 Re: Автоматизация процесса построения сетки в MATLAB
Сообщение04.05.2021, 18:16 
 i  Немного изменил название: до этого только при пролистывании до следующего экрана становилось понятно, о каком конкретно пакете вообще идет речь.

 
 
 
 Re: Автоматизация процесса построения сетки в MATLAB
Сообщение04.05.2021, 18:26 
Pphantom
Прошу прощения, забыл в заголовке указать

 
 
 
 Re: Автоматизация процесса построения сетки в MATLAB
Сообщение05.05.2021, 09:34 
Прошу прощения, не совсем корректно написал, мне нужно вызывать циклом и записывай каждый трек в массив, а затем с помощью plot(Ts1(i,:,1),Ts1(i,:,2),Ts2(i,:,1),Ts2(i,:,2)) уже просто вывести эту сетку, где Ts_i как раз тот массив кривых Tr_i..

Но можно строить и циклом график, т.е в цикле реализовать вывод plot(Tr1(i,:,1),Tr1(i,:,2),Tr2(i,:,1),Tr2(i,:,2)) , правда в этом случае, передавая при вызове Tr1_qq2(i,:)=CoordTransform(q1,qq2);, т.е массив координат констант, потом размерности не совпадают, так что вариант с циклом конечно, не работает, сколько я его ни пробовал, но и вариант без цикла plot также пока не сработал...

 
 
 
 Re: Автоматизация процесса построения сетки в MATLAB
Сообщение25.05.2021, 23:30 
Pphantom
Прошу прощения, уважаемый Pphantom, а можно закрыть данную тему?

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group