Priklad v matlabe - opravenie chyby - SURA POMOC

Programovacie jazyky, rady, poradňa...
Zetom
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 361
Registrovaný: 17 jún 2005, 9:55
Bydlisko: Dvorany nad Nitrou

Priklad v matlabe - opravenie chyby - SURA POMOC

Príspevok od používateľa Zetom »

Zdravim pani, potreboval by som zdovodnit,resp opravit chybu v kode jedneho programu v matlabe,v matlabe neviem vobec pracovat a ide o model balistickej krivky, kedze neviem pracovat v matlabe, tak si ani neviem rady s chybou,ktoru mi vyhodi.Ide o to ze mi vyhodi chybu nespravny pocet vstupnych parametrov, neviem ako zadat tie vstupne parametre, skusal som cez subor, ale neviem ci to bolo spravne.Prosim o vasu pomoc,velmi pekne dakujem.

Kód: Vybrať všetko

function varargout = balis(varargin)
%
%[td, xd] = balis(v0, h0, alpha [, fileout])
%[td, xd] = balis(filein [, fileout])
%
% Vypise cas a misto dopadu strely a vykresli drahu letu.
%
% Vstup:
%   v0      - Pocatecni rychlost vystrelu [m/s]
%   h0      - Pocatecni vyska nad terenem [m]
%   alpha   - Uhel stoupani vystrelu [stupne]
%   filein  - Jmeno souboru pro vstup
%             Ocekava se soubor v textovem formatu.
%             V souboru budou kazdy na novem radky predchozi 3 parametry.
%   fileout - Jmeno souboru pro vystup (nepovinne)
%
% Vystup (nepovinne - oba nebo zadny):
%   td - Cas dopadu [s]
%   xd - Dolet [m]

    if ((nargin < 1) | (nargin > 4))
        error('Nespravny pocet vstupnich parametru.');
    end
    if (not ((nargout == 0) | (nargout == 2)))
        error('Nespravny pocet vstupnich parametru.');
    end
    if (nargin <= 2)
        fin = fopen(varargin{1}, 'r');
        v0 = str2num(fgetl(fin));
        h0 = str2num(fgetl(fin));
        alpha = str2num(fgetl(fin));
        fclose(fin);
    else
        v0 = varargin{1};
        h0 = varargin{2};
        alpha = varargin{3};
    end
    
    if ((nargin == 2) | (nargin == 4))
        fout = fopen(varargin{nargin}, 'w');
    else
        fout = 1;
    end

    global g
    
    g = 9.81;
    v0x = v0 * cos(alpha/180*pi);
    v0y = v0 * sin(alpha/180*pi);
    tmax = 100; % Maximalni doba letu

    [t, r] = ode45(@bal_fce, [0, tmax], [0; v0x; h0; v0y], ...
                odeset('Events', @bal_stop));

    plot(r(:, 1), r(:, 3));
    xlabel('vzdalenost [m]');
    ylabel('vyska [m]');
    title('Balisticka krivka');
    
    lt = length(t);
    if (nargout == 0) 
        fprintf(fout, 'Strela dopadne za %0.3f s ve vzdalenosti %0.3f m.\n\n', ...
            [t(lt), r(lt, 1)]);
    else
        varargout{1} = t(lt);
        varargout{2} = r(lt, 1);
    end
    if (fout ~= 1)
        fclose(fout);
    end
end

function result = bal_fce(t, s)
% vrati hodnotu derivaci
    global g;
    result = [s(2); 0 - s(2); s(4); 0 - s(4) - g];
end

function [value, isterminal, direction] = bal_stop(t, s)
% pri dopadu zastavi vypocet
    value = s(3); % vyska == 0
    isterminal = 1;
    direction = -1; % dopad
end
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: Priklad v matlabe - opravenie chyby - SURA POMOC

Príspevok od používateľa c-ice »

vytvoris si m-file a ides ho spustit tak balis.m mas aj funkciu takze v tom hlavnom commande (Command window) napises

Kód: Vybrať všetko

balis (0,1,5)
podobne to bude aj z file...
Zetom
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 361
Registrovaný: 17 jún 2005, 9:55
Bydlisko: Dvorany nad Nitrou

Re: Priklad v matlabe - opravenie chyby - SURA POMOC

Príspevok od používateľa Zetom »

Velmi pekne dakujem, tak som to uz skusal,ale mi to neslo, asi som pisal tie vstupy nejako blbo dik moc a chcem sa opytat keby to robim cez filme, tak nazov suboru je balis ? a keby pouzivam ten file, tak musel by som v kode nieco prepisat,alebo odkomenotovat ? dik
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: Priklad v matlabe - opravenie chyby - SURA POMOC

Príspevok od používateľa c-ice »

Netusim akym sposobom sa da subor ulozit do premennej ale mozno by si mohol skusit Google ... robili sme všeličo z Matlabom ale z nacitavanim z externeho suboru udajov do funkcie sme sa nehrali skor tak Neuronove Siete alebo nejake ine haluze co som po skuske vymazal z hlavy
Zetom
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 361
Registrovaný: 17 jún 2005, 9:55
Bydlisko: Dvorany nad Nitrou

Re: Priklad v matlabe - opravenie chyby - SURA POMOC

Príspevok od používateľa Zetom »

Dik a neviete prosim vas niekto aby by vyzeral ten vstupny subor? Ak by niekto vedel pls pomozte, diki moc.
Napísať odpoveď