انجمن سایت کلیدستان



تعریف یک رویه در یک ماتریس سه بعدیزمان کنونی: ۱۳۹۵/۰۹/۱۷، ۰۴:۵۷ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: 4i469x
آخرین ارسال: 4i469x
پاسخ 6
بازدید 2371

رتبه موضوع:
  • 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تعریف یک رویه در یک ماتریس سه بعدی

تعریف یک رویه در یک ماتریس سه بعدی

#1
سلام ، من میخوام یک رویه در یک ماتریس سه بعدی تعریف کنم به عبارت دیگر میخوام شکلی مثل شکل زیر رو در یک ماتریس سه بعدی صفر ایجاد کنم که به جای رویه عدد یک باشه . میتونید کمکم کنید . ممنون

   
دوست دارم زندگی رو . . . 
پاسخ

تعریف یک رویه در یک ماتریس سه بعدی

#2
سلام دوست عزیز.
اگر به دستوراتی مثل surf و mesh که در متلب برای ترسیم سه بعدی به کار می روند، دقت کنیم، آنها از تعریف X و Y و Z ، برای رسم سه بعدی استفاده می کنند (برای هر نقطه با مختصات X و Y ، یک Z داریم که ارتفاع آن نقطه را تعیین می کند و بر این اساس شکل رسم می شوند). حال شما قصد دارید که به جای این روش، یک ماتریس سه بعدی بسازیم که همه درایه های آن صفر باشد و سپس نقاط مربوط به تعریف سطح را برابر 1 قرار بدهیم و سپس بر این اساس، بتوانیم سطح را رسم کنیم.
ابتدا بگویم که این روش را توصیه نمی کنم زیرا ماتریس مورد نظر، حجم زیادی اشغال می کند، ولی خوب مسلما شما از این مسئله آگاه بوده اید و به احتمال زیاد، این روش، مزایایی برای شما دارد که به سراغ آن رفته اید. راه حلی که به ذهن من می رسد این است که شما باید دو تابع تبدیل بسازید، یکی برای تبدیل اطلاعات از حالت X و Y و Z مرسوم (همان که توضیح دادم) به حالت 0 و 1 و یک تابع تبدیل دیگر برای تبدیل از حالت 0 و 1 به  حالت X و Y و Z مرسوم. شما پردازش های مورد نظرتان را در حالت 0 و 1 که مد نظرتان بوده است، انجام می دهید و سپس، برای رسم نتیجه و مشاهده شکل سه بعدی، از  حالت X و Y و Z مرسوم استفاده می کنید، زیرا متلب دستوراتی مثل surf و mesh (و یک سری دستور دیگر) را دارد که برای این منظور به کار می رود.
برای تبدیل حالت X و Y و Z به حالت 0 و 1 ، شما ماتریس سه بعدی شامل درایه های صفر می سازید و سپس برای هر مختصات X و Y ، باید Z امین درایه در جهت عمودی را برابر 1 قرار دهید. در واقع، در ماتریس سه بعدی که داریم، در جهت عمودی، هر ستون داده، تنها دارای یک مقدار 1 خواهد بود و سایر درایه های آن ستون، برابر 0 است. برای تبدیل حالت 0 و 1 به  حالت X و Y و Z نیز، چک می کنیم که چندمین درایه هر ستون، برابر 1 است و آنگاه، Z را بر این اساس پیدا می کنیم.
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

تعریف یک رویه در یک ماتریس سه بعدی

#3
من میخوام یک سهموی درست کنم و هر نقطه ای که جواب داره در ماتریس سه بعدی صفر که درست کردم در اون محل یک قرار بده . دستور رسم سهموی رو در متلب نمیدونم . فقط دستوری به نام pdepe است که برای حل معادله به کار میره . در ضمن این لینک زیر رو هم ببینید :
http://www.awi-industries.com/OPTICS_aspherics.html
ولی هنوز نمیدونم باید چکار کنم ؟
دوست دارم زندگی رو . . . 
پاسخ

تعریف یک رویه در یک ماتریس سه بعدی

#4
سلام ، من با کدهایی که در زیر نوشتم این شکل رو درست کردم ،حالا چطوری این شکل رو به صورت یک ماتریس سه بعدی ذخیره کنم؟ تا بتونم هر جایی که مقدار وجود داره عدد یک قرار بدم؟


کد:
clc

dis=-50:1:50;
[x,y]=meshgrid(dis);
z=1/4*10^-4*(x.^2+y.^2);
[x1,y1]=meshgrid(dis);
z1=1/8*10^-4*(x1.^2+y.^2);

figure
w=mesh(x,y,-z)

hold all
w1=mesh(x1,y1,-z1)

من بعدا میخوام یک موجک در این ماتریس سه بعدی کانوالو کنم و یک مقطع از سیگنال به دست بیارم ، برای کارهای عادی متلب این مورد رو نمیخوام. فقط به طرح شکل در ماتریس سه بعدی نیاز دارم.
 
دوست دارم زندگی رو . . . 
پاسخ

تعریف یک رویه در یک ماتریس سه بعدی

#5
به لینکی که گذاشته بودید رفتم، شکل آن به صورت زیر است :

   

که از چرخش منحنی زیر به وجود آمده :

   

که معادله آن، به صورت زیر می باشد :

   

وقتی من کدهای شما رو اجرا می کنم، نتیجه به صورت زیر می باشد (شما دو مورد را همزمان رسم کرده اید) :

   

فقط مطمئن هستید که شکل را درست رسم کرده اید (البته اگر هدفتان این بوده که دقیقا همان شکل را رسم کنید) ؟ منظورم این است که معادله z بر حسب x و y را چگونه به دست آورده اید ؟
در ارسال قبلی، روند تبدیل ماتریس ها رو براتون توضیح دادم. برای هر z ، باید z امین عنصر ماتریس (در بعد سوم ماتریس نهایی) را برابر 1 قرار بدهید.


 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

تعریف یک رویه در یک ماتریس سه بعدی

#6
شکلی که رسم کرده ام درست است ولی شکلی که لینک داده ام مثل این شکل نیست ، در نظرم این است که دو رویه در ماتریس سه بعدی داشته باشم، ولی شکل بالا با استفاده از دستور mesh  به دست آمده ، به عبارت بهتر مقدار محور عمودی ماتریس رویه تشکیل شده رو نمیدونم و فقط مختصات x و y اون رو میدونم . در صورتی که از ضریب قبل از توان دوم ایکس بعلاوه توان دوم وای استفاده نکنیم مقدار z  بسیار زیاد میشود که در شکلی که با استفاده از دستور mesh به دست می آید میتوان دید. ماتریس صفری که قرار است تولید کنیم باید سه مختصه داشته باشد که x و  y آن مشخص است ولی مقدار z مشخص نیست . مقدار z باید از رنج مقادیر دامنه که در ماتریس z ذخیره شده است به دست بیاید. در عین حال مقادیر x و y هم از منفی شروع میشوند و این کار رو مشکل میکنه.
دوست دارم زندگی رو . . . 
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)