Krys 2 September 7, 2022 Posted September 7, 2022 · Report post Здравствуйте. Есть у меня желание чисто ради перфекционизма кода в матлабе подставить сразу несколько выходных переменных одной функции в несколько входных переменных другой функции? Гулил, нашёл похожую проблему, но решения не увидел: 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) Может есть всё же способ сделать красиво, в одну строчку, без промежуточных переменных? Quote Share this post Link to post Share on other sites More sharing options...
stealthisname 7 September 7, 2022 Posted September 7, 2022 · Report post конкретно для перехода из полярных координат к комплексному числу, есть способ записать в одну строчку без промежуточных переменных С = rho.*exp(1i*theta); после некоторого времени работы с комплексными вычислениями в matlab это выглядит и красиво и наглядно вариант через pol2cart и complex очевиден даже без комментариев, по справке к этим функциям промежуточные переменные в данном случае не выглядят как костыли и не мешают, напротив, дают дополнительную информацию при отладке в случае, когда идёт обработка больших массивов данных и потеря памяти на промежуточные переменные не допустима, выражение [x,y] = pol2cart(theta,rho); С = complex(x,y); clear x y; является полным аналогом того, что Вам необходимо по функционалу (но не по количеству строчек кода) 1 Quote Share this post Link to post Share on other sites More sharing options...
Krys 2 September 9, 2022 Posted September 9, 2022 · Report post 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); Но чисто из перфекционизма мне так делать не нравится. Хочется как-то напрямую получить доступ к квадратуре. Quote Share this post Link to post Share on other sites More sharing options...
stealthisname 7 September 9, 2022 Posted September 9, 2022 · Report post 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 Quote Share this post Link to post Share on other sites More sharing options...
Krys 2 September 9, 2022 Posted September 9, 2022 · Report post 8 minutes ago, stealthisname said: с = 3*real(c)+1i*imag(c); ну так тоже не очень красиво (чисто из перфекционизма). Всё равно вытаскивается мнимая часть, которая здесь не участвует в вычислениях. Мне бы как-то получить доступ только к вещественной части числа на запись. Вот в этом вопрос. Quote Share this post Link to post Share on other sites More sharing options...
_4afc_ 12 September 9, 2022 Posted September 9, 2022 · Report post On 9/9/2022 at 6:07 AM, Krys said: ну так тоже не очень красиво (чисто из перфекционизма). Написать свою функцию, спрятав в неё то что некрасиво. Quote Share this post Link to post Share on other sites More sharing options...
Krys 2 September 9, 2022 Posted September 9, 2022 · Report post 1 hour ago, _4afc_ said: Написать свою функцию, спрятав в неё то что некрасиво. Тут тоже внутренний перфекционист негодует ))) Вопрос мой скорее можно ли штатным образом так сделать Quote Share this post Link to post Share on other sites More sharing options...