• Регистрация
Элька
Элька 0.00
н/д

График в матлабе

02.07.2020

Всем здравствуйте. Очень нужна помощь. Не получается нарисовать график в матлаб. 

Вот допустим, у меня есть массив A=T(1,1,:)

Я пишу plot(A), но ничего не выходит, я пробовала по всякому, но ничего не получается, прошу, помогите...

  1. Или может быть проще перенести данные в Excel и там уже построить график, но это у меня тоже не выходит... 

Теги

    02.07.2020

    Лучший ответ

    • alextip+46.13
      3.07.2020 12:00

      Если выполнить

      A=T(1,1,:);

      squeeze(A);

      то лишние измерения ликвидируются. Дальше 

      plot(A) должен работать.

    Ответы

    • alextip
      alextip+46.13
      2.07.2020 17:02

      Вы задаете А, как функцию T с входными аргументами (1,1,:)

      Попробуйте написать

      A=[1,1,1,2,1,1,1];%Или любые другие значения

      Затем 

      plot(A);

      • Marat
        Marat+208.00
        3.07.2020 11:13

        Давайте с конкретикой и предысторией. Если выдаёт ошибку - скажите текст ошибки.

        Судя по синтаксису, вы выделяете какой-то вектор (по 3-му измерению) из трёхмерного массива Т, и записываете его в переменную А. Это так?

        • Элька
          Элька0.00
          3.07.2020 11:16

          У меня решение уравнения в сеточной форме. Хочу получить график изменения температуры определённой точки во время всех иттераций. 

           

          • aBoomest
            aBoomest+942.89
            3.07.2020 12:52

            Решение размерности три? Массив Т у вас что из себя представляет? Сохраните его в mat-файл, выложите тут, если не трудно.

            Если там трехмерность, то такое выделение (1,1,:) все равно дает в результате формально массив трехмерный, хоть и кол-во элементов по двум из "направлений" равно единице. Поэтому плот его не скушает.

            clear all;
            A1 = rand(4,5);
            A2 = rand(4,5);
            A3 = rand(4,5);
            Y = cat(3,A1,A2,A3);
            %Point = Y(1,1,:);     % так даст ошибку
            Point(:,1) = Y(1,1,:); % а если измените размещение/расположение, то должно заработать
            plot(Point);
            • Элька
              Элька0.00
              3.07.2020 16:56

              for i=2:M-1
              if(T(i,1,k)<Tref)
              T(i,1,k+1)=T(i,1,k)+a*tau*(T(i+1,1,k)-2*T(i,1,k)+T(i-1,1,k)+T(i,2,k)-T(i,1,k))/(h^2);
              else
              res=a*(T(i+1,1,k)-2*T(i,1,k)+T(i-1,1,k)+T(i,2,k)-T(i,1,k))/(h^2);
              func=@(t,Y)(A*(Y/Tref).^b+res); % определяем функцию, которая возвращает dT/dt
              % T(i,j,k+1)
              [Tout,Yout]=ode45(func,[0 tau],T(i,1,k)); % Находим новую температуру
              res1=Yout(end);
              if(res1>Tmax) % если новая температура слишком велика - ограничиваем её температурой горения
              res1=Tmax;
              end
              T(i,1,k+1)=res1;
              end
              if(T(i,H,k)<Tref)
              T(i,H,k+1)=T(i,H,k)+a*tau*(T(i+1,H,k)-2*T(i,H,k)+T(i-1,H,k)-T(i,H,k)+T(i,H-1,k))/(h^2);
              else
              res=a*(T(i+1,H,k)-2*T(i,H,k)+T(i-1,H,k)-T(i,H,k)+T(i,H-1,k))/(h^2);
              func=@(t,Y)(A*(Y/Tref).^b+res); % определяем функцию, которая возвращает dT/dt
              % T(i,j,k+1)
              [Tout,Yout]=ode45(func,[0 tau],T(i,H,k)); % Находим новую температуру
              res1=Yout(end);
              if(res1>Tmax) % если новая температура слишком велика - ограничиваем её температурой горения
              res1=Tmax;
              end
              T(i,H,k+1)=res1;
              end
              end
              for j=2:H-1
              if(T(1,j,k)<Tref)
              T(1,j,k+1)=T(1,j,k)+a*tau*(T(2,j,k)-T(1,j,k)+T(1,j+1,k)-2*T(1,j,k)+T(1,j-1,k))/(h^2);
              else
              res=a*(T(2,j,k)-T(1,j,k)+T(1,j+1,k)-2*T(1,j,k)+T(1,j-1,k))/(h^2);
              func=@(t,Y)(A*(Y/Tref).^b+res); % определяем функцию, которая возвращает dT/dt
              % T(i,j,k+1)
              [Tout,Yout]=ode45(func,[0 tau],T(1,j,k)); % Находим новую температуру
              res1=Yout(end);
              if(res1>Tmax) % если новая температура слишком велика - ограничиваем её температурой горения
              res1=Tmax;
              end
              T(1,j,k+1)=res1;
              end

          • alextip
            alextip+46.13
            3.07.2020 16:39

            А я и не понял, что это выборка из массива 0))

            • alextip
              alextip+46.13
              3.07.2020 20:10

              Если выполнить

              A=T(1,1,:);

              squeeze(A);

              то лишние измерения ликвидируются. Дальше 

              plot(A) должен работать.

              • Centurio
                Centurio+42.00
                4.07.2020 10:09

                Тогда уж надо написать

                A=squeeze(A);

                иначе массив А по-прежнему останется трёхмерным.

                • Элька
                  Элька0.00
                  5.07.2020 14:47

                  Спасибо большое, все заработало!

                • aBoomest
                  aBoomest+942.89
                  4.07.2020 17:41

                  да, либо использовать squeeze