Poslao: 21 Maj 2011 23:50
|
offline
- Pridružio: 22 Avg 2005
- Poruke: 98
|
Ovaj kod
public float[][] Reader(String[] rows)
{
doubleMat = new float [rows.length][rows.length];
for (int i = 0; i < rows.length; i++)
{
float[] pieces = float(split(rows[i], "\n"));
doubleMat[i] = pieces;
}
return doubleMat;
}
double[][] convert(float[][] f)
{
double[][] d = new double[f.length][f.length];
for (int i= 0; i < f.length; i++)
{
for (int j = 0; i <f.length; j++)
{
d[i][j] = f[i][j];
}
}
return d;
}
me muci jer nikako da proradi onako kako hocu. Treba mi da konvertujem string[] procitan iz .txt fajla u double[] [] ali tako da pomocu ove split naredbe podelim redove po /n. Naravno float lako dolazi do stringova kroz split ali double jednostavno nema tu mogucnost pa sam ovom convert funkcijom pokusao da to zaobidjem rucno ali nikako...Ukoliko ima ideja bilo bi super...
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 22 Maj 2011 08:31
|
offline
- Pridružio: 25 Nov 2004
- Poruke: 2297
- Gde živiš: Kragujevac
|
Imaš ti ovde malo više grešaka.
Prvo, trebao si da priložiš opis greške koju ti izbacuje kompajler.
Drugo, ako je ti je "String[] rows" niz redova, onda nemaš potrebu za petljom: "(split(rows[i], "\n")", u kojoj ti je čak i sintaksa pogrešna.
Ne bi bilo loše ni da prikažeš barem deo sadržaja txt fajla.
|
|
|
|
Poslao: 22 Maj 2011 11:00
|
offline
- Pridružio: 22 Avg 2005
- Poruke: 98
|
Verujem da nije bas cool Java kod ali trebalo je da pomenem da ga i ne koristim u cistoj Javi vec kao deo Processing projekta...zbog toga je ovako nakaradna float(split....) funkicja a ne klasicno castovanje. Ipak ona radi upravo to sto mi treba. Prva funkcija Reader radi super a druga daje gresku samo kod ovog reda d[i][j] = f[i][j]; i to ArrayIndexOutOfBounds: 1. Sam tekst fajl izgleda ovako:
0.180255648139363 -0.00667651298070744 0.162348247019737 -0.191589377969573 0.0709050611053656 -0.138857268088634 0.146756400877611 -0.0544065210280407 0.0872491119739118 0.111238705044165 -0.116569215011486 0.192141757388624 -0.280418657404304 0.204003564941076 0.0227118500122201 -0.124343704359177 -0.0990123162538986 -0.0988786782054228 -0.0528787063381798 0.306381555155529 0.291545269305013 0.122172799109767 -0.184982169990112 -0.0103301592967197 -0.195177619281685 0.126546593213061 0.125249361957426 0.0682256764116228 0.265436694769634 -0.087738303341075 -0.0544473086966838 -0.0519257526733638 -0.112818063949037 -0.0754879115450236 0.404548812048409 0.0734244905911169 0.229415733873826 0 --ovde je /n--
-0.029731866528827 0.128343800862569 0.0853448290258961 -0.0057676140172111 0.131924458161917 -0.0837009386840716 -0.0799432359099045 0.0153208654582728 0.0272930785564452 -0.0832039079093889 -0.0245999102178250 0.325088897420534 -0.126166348706392 -0.0108646206191028 -0.0301377478575977 -0.291720429904751 -0.0583927712453809 0.0455505120187116 0.137172413810623 -0.229005855326070 -0.423559136217893 -0.325557790792932 -0.024826705814583 -0.0544342171327355 0.173708973342865 -0.0271896480207808 -0.125847992838723 -0.232173895258899 0.00750749347114249 0.100859650951929 0.217367139847187 0.0134083209375717 0.0163045562997956 -0.287643933387614 0.244002200729121 0.0953361141284971 0.229415733874776 9.92455077131584e-13
i tako ukupno 38 redova. Meni je inace neophodna upotreba JAMA paketa klasa za matrice ali jedino kako mogu da ubacim ove podatke u potreban format je ako oni budu double[][]. Ja uspevam da pretvorim u float[][] ali u double[][] nikako.
|
|
|
|
Poslao: 22 Maj 2011 15:41
|
offline
- Pridružio: 25 Nov 2004
- Poruke: 2297
- Gde živiš: Kragujevac
|
Mada mi se ne sviđa kako si ovo odradio, nema veze, imaš grešku (previd) kod navođenja promenljive u unutrašnjoj petlji u drugoj metodi:
for (int j = 0; i <f.length; j++)
Treba svuda da bude "j"!
|
|
|
|
Poslao: 22 Maj 2011 21:00
|
offline
- Pridružio: 22 Avg 2005
- Poruke: 98
|
Uh video sam to ali i dalje je IndexOutOfBounds...nesto mi mirise da ovako nece ici alltogether. Moracu da napisem ovo ispocetka...
|
|
|
|
Poslao: 22 Maj 2011 23:59
|
offline
- Pridružio: 25 Nov 2004
- Poruke: 2297
- Gde živiš: Kragujevac
|
Možeš da staviš i ovako
for (int j = 0; j <f[i].length; j++)
da bi izbegao IndexOutOfBounds, mada je meni i dalje sumnjiv onaj prvi metod.
|
|
|
|
Poslao: 23 Maj 2011 19:45
|
offline
- Pridružio: 22 Avg 2005
- Poruke: 98
|
U pravu si potpuno za prvi metod i konacno sam uspeo da ispravim sve i sad radi ono sto sam hteo.
public float[][] Reader(String[] rows)
{
String[] rowCont = split(rows[0], " ");
RSrows = rows.length;
RScols = rowCont.length;
doubleMat = new float [rows.length][RScols];
for(int i = 0; i < rows.length; i++)
{
float[] rowStrings = float(split(rows[i], " "));
for(int j = 0; j < rowStrings.length; j++)
{
doubleMat[i][j] = rowStrings[j];
}
}
return doubleMat;
}
double[][] convertR(float[][] f)
{
double[][] d = new double[RSrows][RScols];
for (int i = 0; i < RSrows; i++)
{
for (int j = 0; j < RScols; j++)
{
d[i][j] = f[i][j];
}
}
return d;
}
fora je bila sa ovim RSrows da bi lepo formirao doubleMat bas po dimenzijama ulaznog floata[] inace se gubio u previse dimenzija ali nije davao nikakvu gresku osim onog out of bounds. Hvala na komentarima.
|
|
|
|