Krys 2 7 сентября, 2022 Опубликовано 7 сентября, 2022 · Жалоба Здравствуйте. Есть у меня желание чисто ради перфекционизма кода в матлабе подставить сразу несколько выходных переменных одной функции в несколько входных переменных другой функции? Гулил, нашёл похожую проблему, но решения не увидел: https://uk.mathworks.com/matlabcentral/answers/180164-use-a-function-that-returns-multiple-values-as-input-argument-to-another-function Своими словами: Есть встроенная функция [x,y] = pol2cart(theta,rho) Я хотел бы из x и y сделать комплексное число такой подстановкой: С = complex(pol2cart(theta,rho)) Но при такой записи передаётся только вещественная часть, мнимая по нулям. Пока реализовал через промежуточные переменные, но это костыли: [x,y] = pol2cart(theta,rho) С = complex(x,y) Может есть всё же способ сделать красиво, в одну строчку, без промежуточных переменных? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealthisname 7 7 сентября, 2022 Опубликовано 7 сентября, 2022 · Жалоба конкретно для перехода из полярных координат к комплексному числу, есть способ записать в одну строчку без промежуточных переменных С = rho.*exp(1i*theta); после некоторого времени работы с комплексными вычислениями в matlab это выглядит и красиво и наглядно вариант через pol2cart и complex очевиден даже без комментариев, по справке к этим функциям промежуточные переменные в данном случае не выглядят как костыли и не мешают, напротив, дают дополнительную информацию при отладке в случае, когда идёт обработка больших массивов данных и потеря памяти на промежуточные переменные не допустима, выражение [x,y] = pol2cart(theta,rho); С = complex(x,y); clear x y; является полным аналогом того, что Вам необходимо по функционалу (но не по количеству строчек кода) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 9 сентября, 2022 Опубликовано 9 сентября, 2022 · Жалоба On 9/8/2022 at 12:33 AM, stealthisname said: конкретно для перехода из полярных координат к комплексному числу Спасибо за подсказку, действительно, элементарно, формула Эйлера, что ж я раньше об этом сам не догадался )) Однако в моём вопросе меня интересовал общий случай, любые функции и переменные. Не знаете решение? И также есть у меня вопрос: можно ли получить доступ к отдельным квадратурам комплексного числа? Вот типа допустим есть у меня c = x + 1i*y Я бы хотел записать примерно такое: c.Re = с.Re*3 Т.е. выполнить некоторые преобразования только с одной квадратурой. Сейчас я знаю лишь способ сначала разложить на отдельные вещественные числа квадратур, выполнить преобразование с одной квадратурой, затем собрать обратно в комплексное число: x = real(c); y = imag(c); x = x*3; c = complex(x, y); Но чисто из перфекционизма мне так делать не нравится. Хочется как-то напрямую получить доступ к квадратуре. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealthisname 7 9 сентября, 2022 Опубликовано 9 сентября, 2022 · Жалоба 4 минуты назад, Krys сказал: Однако в моём вопросе меня интересовал общий случай, любые функции и переменные. Не знаете решение? я так и не нашел утверждения напрямую, что это невозможно, но очень похоже на то, что это основа языка - в выражениях функции выдают только один выходной аргумент, в общем случае такое никак не провернуть 13 минут назад, Krys сказал: выполнить преобразование с одной квадратурой, затем собрать обратно в комплексное число: x = real(c); y = imag(c); x = x*3; c = complex(x, y); выражение с = 3*real(c)+1i*imag(c); делает тоже самое, или в общем случае с = U(real(c),imag(c))+1i*V(real(c),imag(c)); тоже, что и x0 = real(c); y0 = imag(c); x = U(x0,y0); y = V(x0,y0); с = complex(x,y); 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 9 сентября, 2022 Опубликовано 9 сентября, 2022 · Жалоба 8 minutes ago, stealthisname said: с = 3*real(c)+1i*imag(c); ну так тоже не очень красиво (чисто из перфекционизма). Всё равно вытаскивается мнимая часть, которая здесь не участвует в вычислениях. Мне бы как-то получить доступ только к вещественной части числа на запись. Вот в этом вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 9 сентября, 2022 Опубликовано 9 сентября, 2022 · Жалоба On 9/9/2022 at 6:07 AM, Krys said: ну так тоже не очень красиво (чисто из перфекционизма). Написать свою функцию, спрятав в неё то что некрасиво. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 9 сентября, 2022 Опубликовано 9 сентября, 2022 · Жалоба 1 hour ago, _4afc_ said: Написать свою функцию, спрятав в неё то что некрасиво. Тут тоже внутренний перфекционист негодует ))) Вопрос мой скорее можно ли штатным образом так сделать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться