Matlab fórum
Zapis vysledkov - Verzia pre tlač

+- Matlab fórum (http://matlab.sk)
+-- Fórum: Matlab (/forumdisplay.php?fid=4)
+--- Fórum: Programovanie / Programming (/forumdisplay.php?fid=5)
+--- Téma: Zapis vysledkov (/showthread.php?tid=35)



Zapis vysledkov - Jan Lacko - 03-17-2013 20:02

Ahoj, znovu sa na Vas obraciam, ohladne mojho problemu. Super mi tu Larry poradil.
ale este mi vyvstal dalsi necakany problem a neviem si s nim rady
potrebujem aby mi do vysledkov vypisalo bud cilo 1-6 alebo 7-15 . v zacislosti od splnenia podmienky a najdenia min. hodnoty
cely programik je nasledovny:
function [vysledok] = oblohy_lueven(riadok)
LATIT=48.17;
LONGIT=17.06;
De=riadok(9);
Ge=riadok(8);
M=riadok(1);
D=riadok(2);
H=riadok(4);
Dv=riadok(7);
Lz=riadok(10);
gamas=riadok(11);
B1=54.63; C1=1; D1=0; E1=0;
B2=12.35; C2=3.68; D2=0.59; E2=50.47;
B3=48.3; C3=1; D3=0; E3=0;
B4=12.23; C4=3.57; D4=0.57; E4=44.27;
B5=42.59; C5=1; D5=0; E5=0;
B6=11.84; C6=3.53; D6=0.55; E6=38.78;
B7=21.72; C7=4.52; D7=0.63; E7=34.56;
B8=29.35; C8=4.94; D8=0.7; E8=30.41;
B9=10.34; C9=3.45; D9=0.5; E9=27.47;
B10=18.41; C10=4.27; D10=0.63; E10=24.04;
B11=24.41; C11=4.60; D11=0.72; E11=20.76;
B12=23.00; C12=4.43; D12=0.74; E12=18.52;
B13=27.45; C13=4.61; D13=0.76; E13=16.59;
B14=25.54; C14=4.40; D14=0.79; E14=14.56;
B15=28.08; C15=4.13; D15=0.79; E15=13.00;
MIN=riadok(5);
SEC=H+(MIN/60);
DEC_stup=23.45*sind(29.7*M+0.98*D-109);
DEC_rad=(23.45*pi/180)*sin((29.7*M+0.98*D-109)*pi/180);
TIMCOR_stup=0.125*sind(0.98*D+29.7*M-32)+(0.165*sind(1.96*D+59.4*M-38));
TIMCOR_rad=(0.125*pi/180)*sin((0.98*D+29.7*M-32)*pi/180)+(0.165*pi/180)*sin((1.96*D+59.4*M-38)*pi/180);
TRUEST=SEC+((4*(LONGIT-15))/60)-TIMCOR_stup;
HA=15*TRUEST;
HS_stup=asind(sind(LATIT)*sind(DEC_stup)-cosd(LATIT)*cosd(DEC_stup)*cosd(HA));
HS_rad=asin(sin(LATIT*pi/180)*sin(DEC_stup*pi/180)-cos(LATIT*pi/180)*cos(DEC_stup*pi/180)*cos(HA*pi/180));
Ees=((Ge-De)/(sin(HS_stup)));
Lzm_Dvm=Lz/Dv;
Lz_Dv=(((0.225/40)*gamas)-(4.75/40));
if (Lzm_Dvm>0.6);
sprava='99';
elseif (gamas<5);
sprava='99';
elseif ((gamas<=30)&&(Lzm_Dvm<0.05));
sprava='99';
elseif ((gamas>30)&&(Lzm_Dvm<Lz_Dv));
sprava='99';

elseif (Ees<120) ;
Lz1_Dv1=(((((B1*((sin(HS_rad*pi/180))^C1)))/(((cos(HS_rad*pi/180))^D1))+(E1*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz2_Dv2=(((((B2*((sin(HS_rad*pi/180))^C2)))/(((cos(HS_rad*pi/180))^D2))+(E2*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz3_Dv3=(((((B3*((sin(HS_rad*pi/180))^C3)))/(((cos(HS_rad*pi/180))^D3))+(E3*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz4_Dv4=(((((B4*((sin(HS_rad*pi/180))^C4)))/(((cos(HS_rad*pi/180))^D4))+(E4*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz5_Dv5=(((((B5*((sin(HS_rad*pi/180))^C5)))/(((cos(HS_rad*pi/180))^D5))+(E5*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz6_Dv6=(((((B6*((sin(HS_rad*pi/180))^C6)))/(((cos(HS_rad*pi/180))^D6))+(E6*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
one=abs(Lz1_Dv1-Lzm_Dvm);
two=abs(Lz2_Dv2-Lzm_Dvm);
three=abs(Lz3_Dv3-Lzm_Dvm);
four=abs(Lz4_Dv4-Lzm_Dvm);
five=abs(Lz5_Dv5-Lzm_Dvm);
six=abs(Lz6_Dv6-Lzm_Dvm);
%hľadanie minima
x_name=[1, 2, 3, 4, 5, 6];
[~, argx]=min([one, two, three, four, five, six]);
sprava = x_name(argx);
else
Lz7_Dv7=(((((B7*((sin(HS_rad*pi/180))^C7)))/(((cos(HS_rad*pi/180))^D7))+(E7*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz8_Dv8=(((((B8*((sin(HS_rad*pi/180))^C8)))/(((cos(HS_rad*pi/180))^D8))+(E8*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz9_Dv9=(((((B9*((sin(HS_rad*pi/180))^C9)))/(((cos(HS_rad*pi/180))^D9))+(E9*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz10_Dv10=(((((B10*((sin(HS_rad*pi/180))^C10)))/(((cos(HS_rad*pi/180))^D10))+(E10*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz11_Dv11=(((((B11*((sin(HS_rad*pi/180))^C11)))/(((cos(HS_rad*pi/180))^D11))+(E11*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz12_Dv12=(((((B12*((sin(HS_rad*pi/180))^C12)))/(((cos(HS_rad*pi/180))^D12))+(E12*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz13_Dv13=(((((B13*((sin(HS_rad*pi/180))^C13)))/(((cos(HS_rad*pi/180))^D13))+(E13*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz14_Dv14=(((((B14*((sin(HS_rad*pi/180))^C14)))/(((cos(HS_rad*pi/180))^D14))+(E14*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
Lz15_Dv15=(((((B15*((sin(HS_rad*pi/180))^C15)))/(((cos(HS_rad*pi/180))^D15))+(E15*(sin(HS_rad*pi/180)))))/(133.8*(sin(HS_rad*pi/180))));
seven=abs(Lz7_Dv7-Lzm_Dvm);
eight=abs(Lz8_Dv8-Lzm_Dvm);
nine=abs(Lz9_Dv9-Lzm_Dvm);
ten=abs(Lz10_Dv10-Lzm_Dvm);
eleven=abs(Lz11_Dv11-Lzm_Dvm);
twelve=abs(Lz12_Dv12-Lzm_Dvm);
thirteen=abs(Lz13_Dv13-Lzm_Dvm);
forteen=abs(Lz14_Dv14-Lzm_Dvm);
fifteen=abs(Lz15_Dv15-Lzm_Dvm);
%hľadanie minima [~, argx]
x_name=[7, 8, 9, 10, 11, 12, 13, 14, 15];
[~, argx]=min([seven, eight, nine, ten, eleven, twelve, thirteen, forteen, fifteen]);
sprava = x_name(argx);

end

vysledok = [riadok(1), riadok(2), riadok(3), riadok(4), riadok(5), sprava];

na import dat a export vysledkov mam urobeny samotny suborik nasledovne :

function spracovanie(adresar, pripona, adresar_vysledkov, funkcia)
% nacita vsetky subory s priponou ouf
files = dir(strcat(adresar, pripona));

% vytvor adresar kde budu vysledky
vysledky = adresar_vysledkov
mkdir(vysledky);

% pre kazdy subor spravi vypocet
for i=1:length(files)
%nacita subor
filename = files(i).name;
path = strcat(adresar, filename);
data = importdata(path);

vysledny_subor = fopen(strcat(vysledky, filename), 'wt');
% pre kazdy riadok urob vypocet %s\n
for riadok=1:length(data)
vysledok = funkcia(data(riadok,Smile);
fprintf(vysledny_subor, '%d %d %d %d %d %s\n', vysledok);
end
fclose(vysledny_subor);
end

v com je teda moj problem...
program sice rata spravne ale nespravne zapisuje vysledok v casti "sprava"
vypisuje mi len nejake znaky a nie cisla viete mi poradit co s tym? aby zapisovalo cisla 1-6 a 7-15?
dakujem za odpoved
ps. tam kde ukazuje smajlik je zapis dojbodka a hned za tym zatvorka


RE: Zapis vysledkov - Larry - 03-18-2013 19:09

pravdepodobne je to tym ze sprava je cislo a cize vo funkcii fprintf musi mat format '%d'(Integer - cele cislo), pretoze '%s' je pre String - retazec ?


RE: Zapis vysledkov - Jan Lacko - 03-25-2013 20:13

ano dakujem, bolo to v tom