2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Автоматизация процесса построения сетки в MATLAB
Сообщение04.05.2021, 18:11 


17/03/20
137
Здравствуйте, уважаемые форумчане! Третий день бьюсь над решением проблемы, и никак не получается ее решить. 

Суть такова: необходимо построить сетку, и провести процесс коррекции (но это сейчас не столь принципиально). Проблема заключается в следующем: кривые, которые образуют сетку задаются с помощью вызова функции 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 
Супермодератор
Аватара пользователя


09/05/12
24043
Кронштадт
 i  Немного изменил название: до этого только при пролистывании до следующего экрана становилось понятно, о каком конкретно пакете вообще идет речь.

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


17/03/20
137
Pphantom
Прошу прощения, забыл в заголовке указать

 Профиль  
                  
 
 Re: Автоматизация процесса построения сетки в MATLAB
Сообщение05.05.2021, 09:34 


17/03/20
137
Прошу прощения, не совсем корректно написал, мне нужно вызывать циклом и записывай каждый трек в массив, а затем с помощью 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 


17/03/20
137
Pphantom
Прошу прощения, уважаемый Pphantom, а можно закрыть данную тему?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group