bonjour,
je voudrais traduire un script matlab en scilab. quel serait selon vous le moyen le plus rapide d'y arriver?
merci
Version imprimable
bonjour,
je voudrais traduire un script matlab en scilab. quel serait selon vous le moyen le plus rapide d'y arriver?
merci
Euhhh copier/coller ? :mrgreen:
Ha Ha! tres drole :mrgreen:
Sérieusement je ne vois pas bien le problème ?
La syntaxe est assez proche, non ?
Alors à part faire un copier/coller et ajuster quelques lignes, je ne vois pas où se trouve le problème...
je sais, c'est juste que le code est long d'un Kilomètre.
bon bon, j'ai trouvé en fait:
c'est tout con, dans scilab: fichier/ importer un fichier matlab :oops:
autre chose:
j'ai là un programme matlab qui fonctionne mais qui apparemment consomme enormement de resources. pourriez vous l'aider à identifier le bout de code qui consomme cette quantité phenomenale de RAM pour que j'essaie de l'alleger?
merci.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 max=10;%nbr max d'iterations l=6;%languer du mur h=2;%hauteur du mur e=0.5;%epaisseur du mur n1=1/49;%n=1/(r-1)//r=50 n2=1/199;%n=1/(r-1)//r=200 n3=1/179;%n=1/(r-1)//r=200-20=180 lambdab=1.8;%lambde du beton rho=2300;% rho du beton c=800; k=ones(50,200) * 273.13;%matrice qui sert à rammener les K en °C sigma=5.67*10^(-8); t0=298.13; E1=1368; %t1=323.13; p0=t0^4*sigma; s=l*e; emis=0.9; td=144;%debut du chauffage à 10H tf=288;%fin du chauffage à 14H omega=ones(50,200) * 278.13; for t=0:1:432 a=t/240;%secondes rammenés aux degres for a=0:1:180% a: angle que fait le soleil avec l'horizontale à partir de l'est if a<90% faces est exposé au rayonnement t2=(((298.13^4)/2)+E1/(sigma*cos(a)))^0.25; d2=ones(1,200)*t2;%est else if t2>278.13 t2=(((278.13^4)/2)+E1/(sigma*cos(90)))^0.25-10*cos(2*pi*t/864); d2=ones(1,200)*t2;%est else t2=278.13; d2=ones(1,200)*t2;%est end end end if t<td t5=278.13; d5=ones(1,20)*t5;%west/radiateur else if t<tf if t5<323.13 t5=278.13+10*cos(2*pi*t/864); d5=ones(1,20)*t5;%west/radiateur else t5=323.13; d5=ones(1,20)*t5;%west/radiateur end else if t5>273.13 t5=323.13-10*cos(2*pi*t/864); d5=ones(1,20)*t5;%west/radiateur else t5=278.13; d5=ones(1,20)*t5;%west/radiateur end end d1=ones(50,1)*278.13;%base d1(1,1)=t5; %base d1(50,1)=t2; %base for m=1:1:max for i=2:1:49 d1(i,1)=d1(i,1)+(-4*d1(i,1)+d1(i-1,1)+d1(i+1,1))/(2+n1*rho*c/lambdab); % base end end d4=ones(1,180)*278.13;%base d4(1,1)=t5;%west/hors radiateur d4(1,180)=278.13; ;%west/hors radiateur for m=1:1:max for j=2:1:179 d4(1,j)=d4(1,j)+(-4*d4(1,j)+d4(1,j-1)+d4(1,j+1))/(2+n3*rho*c/lambdab);% west/hors radiateur end end d3=ones(50,1)*278.13;%haut d3(1,1)=278.13; %haut d3(50,1)=t2; %haut for m=1:1:max for i=2:1:49 d3(i,1)=d1(i,1)+(-4*d1(i,1)+d1(i-1,1)+d1(i+1,1))/(2+n1*rho*c/lambdab); %haut end end d6=ones(1,200)*0;%d6 rassemble d4 et d5 d6(1,1:20)=d5; d6(1,21:200)=d4; omega(50,:)=d6; omega(:,200)=d1; omega(1,:)=d2; omega(:,1)=d3; for j=2:1:199 i=2:1:49 omega(i,j)=omega(i,j)+(-4*omega(i,j)+omega(i-1,j)+omega(i,j-1)+omega(i+1,j)+omega(i,j+1))/(4+n1*n2*rho*c/lambdab);%eq de la chaleur à deux dimensions omegac=omega-k; plot(omegac); end end end end
Dans un premier temps essayes d'utiliser le profiler pour trouver les lignes les plus consommatrices ;)
Tu peux aussi essayer cet outil de profilage memoire:
http://www.mathworks.com/matlabcentr...bjectType=File
Salutations,
Greg