comment résoudre ce probleme dans matlab - منتديات الجلفة لكل الجزائريين و العرب

العودة   منتديات الجلفة لكل الجزائريين و العرب > منتديات التقنية > منتدى البرمجة

منتدى البرمجة كل ما يتعلق بلغات البرمجة، فيجوال بيسيك , سي ++ , دلفي , أكسيس , جافا , هتمل...

في حال وجود أي مواضيع أو ردود مُخالفة من قبل الأعضاء، يُرجى الإبلاغ عنها فورًا باستخدام أيقونة تقرير عن مشاركة سيئة ( تقرير عن مشاركة سيئة )، و الموجودة أسفل كل مشاركة .

آخر المواضيع

comment résoudre ce probleme dans matlab

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 2012-05-09, 15:21   رقم المشاركة : 1
معلومات العضو
khawla MI
عضو مشارك
 
إحصائية العضو










افتراضي comment résoudre ce probleme dans matlab

السلام عليكم
encore une fois un probleme dans le temps de calcule
le programme qui va etre décrit per la suite prendre plus de 35 seconds pour s'executer je veut minimiser ce temps à 0.08 s est ce que ça est fesaible et s'il est le cas comment je peut le minimiser
voila le programme

كود:
global nx
global ny
global dx
global dy
global PD
I=imread('lena.jpg');
I=rgb2gray(I);%I est une image 
[X Y]=size(I); 
J= zeros(X,Y); %Image interpolée
dx = 26;dy = 26;
Tdx = 0:dx:X-1;Tdx = [dx , Tdx, X-1, X-1+dx];
Tdy = 0:dy:Y-1;Tdy = [dy , Tdy, Y-1, Y-1+dy];
nx = length(Tdx);ny = length(Tdy);
PD = zeros(nx*ny,2); 
k=1;
for i=1:length(Tdx)
for j=1:length(Tdy)
PD(k,1)=round(Tdx(i)); PD(k,2)=round(Tdy(j)); 
k=k+1; 
end
end
for x=1:X,
for y=1:Y,
T=Interpolation(x-1,y-1) + 1 ; 
x1 = max(round(x),1); x1=min(x1,X);
y1 = max(round(y),1); y1=min(y1,Y);
J(x,y) = I(x1,y1);
end
end
Où Interpolation est une fonction définit comme:
كود:
function Inter = Interpolation(x,y)
global nx
global ny
global dx
global dy
global PD
i = floor(x/dx)-1; j = floor(y/dy)-1; 
u=(x/dx)-floor(x/dx); v=(y/dy)-floor(y/dy);
Inter =[0,0];
for l=0:3
for m=0:3
k = (i+l+1)*nx + (j+m+2);
 
Inter = Inter + Auxiliaire(u,l)*Auxiliaire(v,m).*PD(k,:);
end
end
de meme la fonction Auxiliaire est definit par:
كود:
function A = Auxiliare(x,i)
switch i
case 0
A=((1-x).*(1-x).*(1-x))/6;
case 1
A=(3*x.*x.*x - 6*x.*x + 4)/6;
case 2
A=(-3*x.*x.*x + 3*x.*x + 3*x +1)/6;
case 3
A=x.*x.*x/6;
otherwise
disp('entré non valide.')
end
la fonction qui prend beaucoup de temps est la fonction Interpolation je veut la minimiser parce que je doit faire appelle de cette fonction dans des autres fonctions et pour un nombre important de fois et ça ne m'aide pas avec un temps de calcule égale à 30 seconds est ce que vous pouver m'aider

merci d'avance








 

الصور المرفقة
نوع الملف: jpg lena.jpg‏ (9.6 كيلوبايت, المشاهدات 11)

رد مع اقتباس
قديم 2012-05-12, 11:03   رقم المشاركة : 2
معلومات العضو
khawla MI
عضو مشارك
 
إحصائية العضو










افتراضي

قيل لي أن ال mex file يمكنها أن تحل مشكل بطء تنفيذ أي برنامج في الماتلاب هل هذا صحيح؟ و إن كان كذلك كيف بإمكاني استخدامها؟ أرجو منكم يا أهل الاختصاص التكرم علي ولو بفكرة ربما تأتي بفائدة
أشكركم
تقبلو تحياتي










رد مع اقتباس
قديم 2012-05-13, 20:08   رقم المشاركة : 3
معلومات العضو
djamel123
عضو مميّز
 
الصورة الرمزية djamel123
 

 

 
إحصائية العضو










افتراضي

السلام عليكم
-أنا عندما جربت تنفيذ البرنامج استغرق تقريبا 4 ثواني فقط بدون أن أغير شئ، ربما عندك الجهاز ثقيل.
- بالنسبة لـ mex file فهي فعلا تنقص الوقت لكن ليس بدرجة كبيرة جدا واذا أردتي استعمالها فيجب كتابة الدالة Interpolation و Auxilare بلغة c ثم تحويلها عن طريق كتابة مايلي:
كود:
mex Interpolation.c
mex Auxilare.c
ثم تنفيذ البرنامج.
و هنا مثال عن كتابة دالة mex واذا أحتجتي مساعدة اظافية نحن حاضرون.










رد مع اقتباس
قديم 2012-05-14, 20:13   رقم المشاركة : 4
معلومات العضو
khawla MI
عضو مشارك
 
إحصائية العضو










افتراضي

السلام عليكم

في الحقيقة لم أفكر في إمكانية أن يكون المشكل في الجهاز أعدت تنفيذه للتو حيث استخدمت ال alprofiler ولم يتغير معي شيء لكن بما أنه نفذ عندك بهدا الوقت سوف أنظر في هدا المشكل
ال mex function هي الأخرى حل مثالي
أشكرك أخي الكريم على المعلومة و على مساعدتي في كل مرة
شكرا










رد مع اقتباس
قديم 2012-05-29, 11:04   رقم المشاركة : 5
معلومات العضو
fayssal22
عضو جديد
 
إحصائية العضو










افتراضي

vous pouvez utiliser les mex files ils minimisent considérablement le temps de calcul jusqu'à 75% notamment si ton code comporte plusieurs boucles, il est a noter que les tu peux mexer le fortron ou C.
la 2 solution est la pré-al******** de mémoire si vous utiliser des vecteurs ou des matrices.....etc










رد مع اقتباس
قديم 2012-06-22, 16:30   رقم المشاركة : 6
معلومات العضو
khawla MI
عضو مشارك
 
إحصائية العضو










افتراضي

السلام عليكم

اود تعلم كيفية ادراج الmex function الى برنامج ماتلاب ادا كان ممكن يا أخي جمال و يا أخي فيصل و يا كل من لديه معلومة امدادي بمثال سهل يمككني فهمه
مثلا مادا افعل لو اردت كتابة هادا الكود و مناداته في الماتلاب عن طريق ال mex file

كود:

function k = Interpoler(I,x,y,q)
[X,Y]=size(I);
switch q
case 1
[m,n] = size(I);
x1 = round(x); x1 = max(x1,1); x1=min(x1,m);
y1 = round(y); y1 = max(y1,1); y1=min(y1,n);
k = I(x1,y1);
case 2
n=floor(x);n=max(n,1);n=min(n,X-1);
m=floor(y);m=max(m,1);m=min(m,Y-1);
sigma_x=x-n;
sigma_y=y-m;
k=(1-sigma_x)*(1-sigma_y)*I(n,m)+sigma_x*(1-sigma_y)*I(n+1,m)+(1-sigma_x)*sigma_y*I(n,m+1)+sigma_x*sigma_y*I(n+1,m+1);

otherwise
disp('invalide data');
end
c'est un programme qui fait l'interpolation d'une image
a titre d'exemple

merci d'avance









رد مع اقتباس
قديم 2012-06-22, 22:28   رقم المشاركة : 7
معلومات العضو
hark
عضو جديد
 
إحصائية العضو










افتراضي

عمل رائع بارك الله فيك










رد مع اقتباس
قديم 2012-06-25, 23:48   رقم المشاركة : 8
معلومات العضو
fayssal22
عضو جديد
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة khawla MI مشاهدة المشاركة
السلام عليكم

اود تعلم كيفية ادراج الmex function الى برنامج ماتلاب ادا كان ممكن يا أخي جمال و يا أخي فيصل و يا كل من لديه معلومة امدادي بمثال سهل يمككني فهمه
مثلا مادا افعل لو اردت كتابة هادا الكود و مناداته في الماتلاب عن طريق ال mex file
كود:

function k = Interpoler(I,x,y,q)
[X,Y]=size(I);
switch q
case 1
[m,n] = size(I);
x1 = round(x); x1 = max(x1,1); x1=min(x1,m);
y1 = round(y); y1 = max(y1,1); y1=min(y1,n);
k = I(x1,y1);
case 2
n=floor(x);n=max(n,1);n=min(n,X-1);
m=floor(y);m=max(m,1);m=min(m,Y-1);
sigma_x=x-n;
sigma_y=y-m;
k=(1-sigma_x)*(1-sigma_y)*I(n,m)+sigma_x*(1-sigma_y)*I(n+1,m)+(1-sigma_x)*sigma_y*I(n,m+1)+sigma_x*sigma_y*I(n+1,m+1);

otherwise
disp('invalide data');
end
c'est un programme qui fait l'interpolation d'une image
a titre d'exemple

merci d'avance

عذرا على التاخير لانني ظننت ان الموضوع فقد اهميته
شوفي


les mex files ce sont des fichiers ecrits en C ou fortran avec une syntaxe légèrement différente au langage c ou fortran standard
par exemple votre fonction interpoler.c
tapez la commande mex interpoler.c ,dans command window, et vous aurez une nouvelle fonction sous forme .dll (selon la version du matlab et le système d'exploitation) dans votre cas interpoler.dll
il suffit d'appeler cette fonction dans le programme principal

a l’égard des exemples il y en a beaucoup sur le net............

si il y a quoi que ce soit n'hésitez pas a demander









رد مع اقتباس
قديم 2012-06-26, 15:57   رقم المشاركة : 9
معلومات العضو
khawla MI
عضو مشارك
 
إحصائية العضو










افتراضي

où peut je trouve le fichier interpoler.c compiler j'ai fait tous ce que vous avez disez j'ai compiler mon fichier dans la commande windows et aprés ?? qu'est ce que je doit faire ??
merci pour votre réponse merci pour votre aide










رد مع اقتباس
قديم 2012-06-26, 19:25   رقم المشاركة : 10
معلومات العضو
fayssal22
عضو جديد
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة khawla MI مشاهدة المشاركة
où peut je trouve le fichier interpoler.c compiler j'ai fait tous ce que vous avez disez j'ai compiler mon fichier dans la commande windows et aprés ?? qu'est ce que je doit faire ??
merci pour votre réponse merci pour votre aide

tu dois l’écrire toi même en langage C (ce n'est pas une simple conversion de l’extension .m vers .c) .....etc
je te conseille de lire ce livre avant de commencer la programmation des mex files
il s'appelle

MATLAB C/C++ Book c'est un excellent ouvrage avec plusieurs exercices résolus

sinon je le ferais moi même, il suffit de poser l’énoncé du problème d'une façon bien détaillée









رد مع اقتباس
قديم 2012-07-02, 21:39   رقم المشاركة : 11
معلومات العضو
khawla MI
عضو مشارك
 
إحصائية العضو










افتراضي

Machkour akhi fayssal barak allaho fikom wa wafakakomlima yohibo wa yarda










رد مع اقتباس
قديم 2012-07-06, 17:50   رقم المشاركة : 12
معلومات العضو
solaimane
عضو جديد
 
إحصائية العضو










افتراضي

شكرااا جزيلا اخي العزيز










رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
comment, dans, matlab, probleme, resoudre


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

الساعة الآن 17:54

المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى
المنتدى غير مسؤول عن أي إتفاق تجاري بين الأعضاء... فعلى الجميع تحمّل المسؤولية


2006-2024 © www.djelfa.info جميع الحقوق محفوظة - الجلفة إنفو (خ. ب. س)

Powered by vBulletin .Copyright آ© 2018 vBulletin Solutions, Inc