Matlab:Streamslice в задаче о полярных координатах

Я борюсь с моим кодом, который должен создавать линии тока векторного поля в полярных координатах. Я преобразовал (r, phi) компоненты в нормальные декартовы координаты (x,y). Компоненты в терминах (r, phi) были распределены равномерно, то есть для r = 0:const:10, phi = 0:const:2*pi. Сейчас я пытаюсь вычислить линии потока этого векторного поля, используя streamslice(x,y,wx,wy), но я получаю ошибку:

    streamslice(x,y,Gradx,Grady)
Error using griddedInterpolant
Interpolation requires at least two sample points in each
dimension.
Error in interp1 (line 151)
        F = griddedInterpolant(X,V,method);
Error in stream2 (line 62)
    sxi=interp1(xx(:),1:szu(2),sx(k));
Error in streamslice>nicestreams (line 313)
            vertsf = stream2(x,y, u,
            v,xstart,ystart,streamoptions);
Error in streamslice (line 138)
        [vertsout, avertsout] =
        nicestreams(x,y,u,v,density,arrows);

Чтобы быть более подробным, каждая матрица внутри упрощенной функции имеет размеры 201x73. Я также попытался вычислить немного другой потоковый слайс:

streamslice(x',y',Gradx',Grady')

который иногда работал для других людей (да, я провел свое "исследование")... но выдает то же сообщение об ошибке. Я также прилагаю колчанный сюжет этого векторного поля, если оно может кому-то помочь. Если бы кто-то помог мне с этой проблемой, я был бы очень благодарен. На самом деле, я понятия не имею. введите описание изображения здесь

1 ответ

От streamslice документация:

Массивы X а также Y, которые определяют координаты для U а также V, должен быть монотонным, но не должен быть равномерно распределенным. X а также Y должно иметь такое же количество элементов, как если бы meshgrid,

Ваш колчанный график показывает, что вы определили свое векторное поле на монотонной сетке координат r и phi (хотя было бы полезно, если бы вы задали минимальный пример в вопросе, чтобы ваша проблема могла быть точно воспроизведена).

У вас есть два варианта:

  1. Также рассчитайте streamslice в полярных координатах и ​​преобразовать линии тока в декартовы координаты
  2. Создать монотонную сетку в декартовом пространстве, используя [x,y] = meshgrid(...)преобразуйте эти координаты в полярные координаты, чтобы вычислить векторное поле и преобразовать свойства поля обратно в декартовы компоненты согласно невидимой части вашего кода.
Другие вопросы по тегам