График MATLAB не будет отображаться при вводе графика после завершения функции - PullRequest
0 голосов
/ 02 мая 2019

Я получаю это:

"Это утверждение не внутри какой-либо функции. (Это следует за END, который завершает определение функции plot_2_components.) "

Я пытался войти в сюжет до "конца", но никаких графиков не появилось. Предполагая, что переменным присвоены значения.

function [U,A] = beer_game_orbit(a,b,t,Q,x0,n, k)
    %create orbit in 15 x K matrix using a total of N matrix 

    A = zeros(15,n); 

    A(:,1) = x0; 
    for i =2:n
       %compute but do not store yet, iterate over first column
       A(:,i) = beer_game_function(a,b,t,Q,A(:,i-1)); 


    end

    U = A(:,n-k+1:n);

end

function [] = plot_2_components(k1,k2,U)
    %k1 and k2 are the components who we can to graph against each other 
    %U is the output of beer_game_orbit 

    m = size(U(k1,:),2); 

    figure(1); 
    clf; 

    for i = 1:m

        plot(U(k1,i),U(k2,i),'k*'); 
        hold on 

    end


    if(k1 == 1)
        str1 = 'FI'; 
    elseif k1 == 2
        str1 = 'FB'; 
    elseif k1 == 3
        str1 = 'FPD2'; 
    elseif k1 == 4
        str1 = 'FPD1'; 

    end

    if(k2 == 1)
        str2 = 'FI'; 
    elseif k2 == 2
        str2 = 'FB'; 
    elseif k2 == 3
        str2 = 'FPD2'; 
    elseif k2 == 4
        str2 = 'FPD1'; 
    elseif k2 == 5

    end

    title(['Plot of ' str1 ' vs ' str2]);
end

Run [U] = beer_game_orbit(a,b,t,Q,x0,n,k)
plot_2_components(1,4,U)

Спасибо!

1 Ответ

4 голосов
/ 02 мая 2019

Похоже, вы пытаетесь создать файл сценария , который содержит локальные функции ( ПРИМЕЧАНИЕ: поддерживается только в R2016b или новее).Если это так, то вам нужно переместить свои локальные функции после кода, который вы хотите запустить в своем скрипте.Ваш файл должен выглядеть примерно так:

[U] = beer_game_orbit(a,b,t,Q,x0,n,k);  % Code to run
plot_2_components(1,4,U);               % Code to run

function [U,A] = beer_game_orbit(a,b,t,Q,x0,n, k)  % Local function

  % Code for beer_game_orbit...

end

function [] = plot_2_components(k1,k2,U)  % Local function

  % Code for plot_2_components...

end

Если ваш файл начинает с функции, то он будет обрабатываться как файл функции , а не как скрипт,Первая функция - это основная функция (которая вызывается извне файла), в то время как любые последующие функции локальные функции (которые могут вызываться только из файла).Функциональные файлы не могут определять какой-либо код вне определения функции , поэтому вы получаете ошибку.

...