مساعدة في اخراج النتائج من كارتيزي الى polar plot


(system) #1

[COLOR=Navy] بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

لدي مشروع تخرج وهو عبارة عن قياس سرعة الماء في انبوب في عدة مواقع. في المعمل قمت بقياس متوسط السرعة عند كل موقع كما موضح بالصورة اسفل. النقط الحمراء توضح المواقع التى تم قياس السرعة عندها.
الصورة عبارة عن مقطع عرضي في انبوب دائري بقطر 60سم وعمق الماء به 15 سم.

[/color]
المطلوب ::: [COLOR=Navy]هو اخراج البيانات علي شكل كنتورررر بلوت contour plot

يعني شي شبيه الى الصورة التي في الاسفل.[/color]


(Ahmed) #2

[CENTER]وعليكم السلام
لو تتفضل وتعطينا شكل البيانات التي تحصلت عليها
ممكن نقدر نعاونك

[/center]


(system) #3

البيانات تحصلت عليها في متغير بتسمية a

يعني
a عبارة عن مصفوفة تحتوي على كل القيم عند النقاط الحمراء

يعني متلا لو فرضنا اي قيم لي a

ولو نبدا من اول نقطة علي سطح الماء من اليسار بي 1 تم 2 تم 3 , الى ان نصلي الى اخر نقطة وهو عدد الاماكن المقاسة مثلا 50

يعني نفرض ان a = من 1 الى 50

                                            a=1:50

هذا فقط متال لقيم a …مايهمني هو انه كيف استطيع اخراج البيانات ( افرض اي بيانات ) علي شكل كنتور بلووت مثل مافي الصورة.


(Ahmed) #4

اسرار دولة

القضية قضية مبدا
لان العمل يتعلق بالفرضيات التي تعمل عليها. واهمها مبدا الرسم


بصفة عامة

clear all; close all; clc

R=30;
Px=2;
Py=2;

R
نصف قطر الانبوب
Px و Py
التردد الذي سناخذ فيه القياسات حسب المحورين

نشكل خريطة العمل
بفرض ان المبدا هو منتصف الانبوب

[x,y]=meshgrid([-flipdim(0:Px:R,2),0+Px:Px:R],[-flipdim(0:Py:R,2),0+Py:Py:R]);

نتخلص من القيم التي خارج المقطع
ونضعها=غير معرفة
كي يهملها راسم الكونتور

[t ro]=cart2pol(x,y);
x(ro>R)=NaN;
y(ro>R)=NaN;

بعدها نرسم القيم التي نريدها
هنا ساستخدم قيم عشوائية

[m n]=size(x);
A=randint(m,n,100);

ونرسم الكونتور

[G,h] = contourf(x,y,flipdim(A,1));

الرسم لا معنى له لان الداتا عشوائية


(system) #5

احترامي وتقديري لك على المساعدة الاكثر من رائعة

عندي طلبين
1- اذا كان عمق الماء = 15 سم في الانبوب… فكيف ارسم البيانات للماء فقط عند ذالك العمق. لان الكود الذي عملته يقوم برسم البيانات عندما الانبوب يكون ممتلى تماما بالماء. انظر الصورة المرفقة

2- في حالة رسم الكنتور… كيف ارسم اطار خارجي لحدود الدائرة ( الانبوب). انظر الصورة المرفقة

شكرا


(Ahmed) #6

انت الذي طلبت الحالة العامة

يكفي ان تضيف الشرط الذي قلت عليه

x(y>-15)=NaN;
y(y>-15)=NaN;

ايضا تصحيح للطريقة للكود السابق والذي عكسنا فيه الاحداثيات مرتين دون جدوى

الكود يصبح

clear all; close all; clc

R=30;
Px=2;
Py=2;

[x,y]=meshgrid([-flipdim(0:Px:R,2),0+Px:Px:R],[flipdim(0:Py:R,2),-(0+Py:Py:R)]);

[t ro]=cart2pol(x,y);

x(ro>R)=NaN;
y(ro>R)=NaN;

x(y>-15)=NaN;
y(y>-15)=NaN;

[m n]=size(x);
A=randint(m,n,100);


[G,h] = contourf(x,y,A);

الرسم هو المقطع السفلي اي تحت 15 سم


(system) #7

طيب كيف يمكنني تحديد جدار الانبوب اي بمعنى

كيف نرسم حد للدائرة حتى يكون الشكل واضح اكثر

وشكرا اخي مرة تانية


(system) #8

اوكي وجدت الحل لرسم الحدود
وهو اضافة رسم دائرة بنص قطر 30سم




[G,h] = contourf(x,y,flipdim(A,1)); hold on
ang=0:0.01:2*pi; 
xp=R*cos(ang);
yp=R*sin(ang);
plot(xp,yp)

   


شكرا مرة تانية على مساعدتك


(Ahmed) #9

[CENTER]ارسم دائرة فوق الشكل السابق

[/center]