تشخیص وجود یک عدد در یک ماتریس و موقعیت آن عدد در ماتریس، با دستور find در متلب
اگرچه دستور find در متلب، می تواند کاربردهای مختلفی داشته باشد، اما یکی از کاربردهای آن، یافتن یک عدد در یک ماتریس می باشد و حتی موقعیت آن عدد در ماتریس را هم به ما می دهد. در ادامه با چند مثال، چگونگی استفاده از دستور find برای این منظور و همچنین روش های مختلف یافتن موقعیت عدد در ماتریس را شرح خواهیم داد.
در ماتریس A ، چک می کنیم که آیا عدد 2 وجود دارد یا خیر. دستور find ، موقعیت عدد 2 در ماتریس را به صورت ((چندمین عنصر ماتریس)) بر می گرداند :
close all
clc
A=[1 2 3; 5 6 7]
B=find(A==2)
نتیجه :
1 2 3
5 6 7
B =
3
چون سومین عنصر ماتریس A برابر 2 بوده است، بنابراین دستور find ، عدد 3 را بر می گرداند.
این بار همان مثال قبلی را به گونه ای می نویسیم که دستور find ، شماره ردیف و ستون عناصری از ماتریس A که برابر 2 می باشند را به ما بدهد. شماره ردیف این عناصر، در بردار row و شماره ستون آنها، در بردار column ذخیره خواهد شد :
close all
clc
A=[1 2 3; 5 6 7]
[row,column]=find(A==2)
نتیجه :
1 2 3
5 6 7
row =
1
column =
2
close all
clc
A=[3 4 2; 5 2 7]
[row,column]=find(A==2)
نتیجه :
3 4 2
5 2 7
row =
2
1
column =
2
3
ممنون خیلی عالی بود
ببخشید من میخوام یه آدرس بدم به find و اون مقدارو برام برگردونه . چجوری اینکارو بکنم؟
از دستور زیر استفاده کنید. فرض کنید ماتریس ما a میباشد و b مقدار find میباشد انگاه
مقدار ان عناصر را به ما می دهد. یعنی b درون کروشه و کل آن داخل پرانتز باشد.و a قبل از پرانتز.
سلام. اگر b هم سطر بود و هم ستون چی؟
ببخشید من یک سوال دیگر هم دارم. لطف میکنید اگر جواب بدهید.
؟؟ من چندین نقطه در فضا داشتم که مختصات آن ها را در دو ماتریس 1 و 2 جداگانه تعریف کردم. بعد یک ماتریس سومی تعریف کردم که فاصله تک تک نقاط موجود در ماتریس 1 را با تک تک نقاط موجود در ماتریس 2 بدهد. حالا می خواهم به برنامه بگم که اگر هر جا این فاصله کمتر از یک عدد مشخص بود مختصات دو نقطه مربوطه را بمن بدهد. باید چکار کنم.
خیلی ممنون
سلام من یه ماتریس دارم ک ه میخام تو هر مرحله بزرگ ترین مقدارشو برداشت کنم ولی وقتی از دستور find استفاده میکنم مقدار سطر و ستون رو تکراری بر میگیرونه
کد:
for i=1: file_size
m=max(max(PV(:,i)))
if(m>0)
[r,c]=find(PV(:,i)==m)
end
end
الان این کدم یه بار r و c رو درست برگشت میده ولی دفهع های بعد تکراریه!
سلام.با تشکر از پیج مفیدتون یه سوال داشتم ؟
من میخوام توی یک ماتریس similarity تمام ماکزیممهای ماتریس و همینطور موقعیت سطر و ستون اون رو بدونم.میشه راهنمایی بفرمایید؟
سلام و خسته نباشید.
خیلی ممنونم از مطلب مفیدتون.
خیلی دقیق و خوب بود و مشکل من رو حل کرد.
موفق باشید.
با سپاس
سلام چه طور میتونم مقدار عددی x مربوط به Y مشخصی را پیدا کنم برای مثال
میخوام بگم برای Y=1 مقدار X مربوط به آن چقدر است و برایم X=3.528 را چاپ کند
مررسی
سلام.
چنانچه بخواهیم از دستور find استفاده کنیم، کد متلب (MATLAB) زیر را می نویسیم :
سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه اجرای کد متلب (MATLAB) بالا :
اما اگر نخواهیم از دستور find استفاده کنیم، کد متلب (MATLAB) زیر را می نویسیم :
دستور size برای به دست آودرن اندازه یک ماتریس به کار می رود.
نتیجه اجرای کد متلب (MATLAB) بالا :
مرررررررررسی خداوند خیرتون بده
سلام اگر در یک تابع عضویت مثلثی بخوام به اعضای y های مختلف x مربوط به آن را پیدا کنم از دستور که استفاده میکنم فقط برای صفر ویک عدد x را برمیگرداند در صورتی برای اعداد دیگر y چیزی پیدا نمیکند.
x=0:0.1:10
;([y=trimf(x,[3 6 8
مثلا در این مثال جواب زیر را برای یک پیدا میکنم که درست هست.
((x(find(y==1
ans =
6
ولی با توجه به اینکه بعد از اجرای برنامه در ماتریس y جواب 0.9667 را پیدا کردم ولی find نمیکند x مربوط به آن را
((x(find(y==0.9667
ans =
Empty matrix: 1-by-0
واقعااااااااا ممنون میشم به این سوالم هم جواب بدید.
سلام.
نرم افزار متلب (MATLAB) همه رقم های اعشاری اعداد را در خروجی نمایش نمی دهد و آن عنصر از ماتریس، دقیقا برابر 0.9667 نمی باشد.
در این زمینه، در مورد دستور format را بخوانید.
بنابراین در شرط دستور if ، یا باید مقدار دقیق عنصر مورد نظرتان را قرار دهید و یا اینکه اصلا مقادیر ماتریس اصلی را تا 4 رقم اعشار، گرد کنید، تا تنها 4 رقم اعشار داشته باشد و بقیه رقم های اعشاری آن صفر باشد.
سلام ببخشید در متلب تابع fuzarith که برای جمع دو عدد فازیه را یاد گرفتم ولی من نزدیک به 10 عدد فازی دارم که میخوام باهم جمعشون کنم. آیا باید تک تک دو به دو باهم جمع شوند و یا روش دیگری هم هست؟
و سوال دیگرم هم اینه که آیا باید support عوض شود؟ مثال رادر آورده ام. در یک عدد هم ضرب شده. آیا ضرب عدد معمولی در فازی به صورت * است؟
تقریبا یک
Na=11;
amin=0;
amax=2;
a=linspace(amin,amax,Na);
A=trimf(x,[0 1 2]);
aa=x1^3*a;
AA=trimf(x,[aa(1) aa(6) aa(11)]);
تقریبا -30
Nb=11;
bmin=-31;
bmax=-29;
b=linspace(bmin,bmax,Nb);
B=trimf(x,[-31 -30 -29]);
bb=x1^2*b;
BB=trimf(x,[bb(1) bb(6) bb(11)]);
;('C1=fuzarith(x,AA,BB,'sum
Big Likeeeeee
سلام علیکم
ببخشید من تعداد زیادی تابع فازی مثلثی دارم که میخواهم با هم جمع کنم، دستور fuzarith برای جمع دو تابع فازی است، ولی من تعداد زیادی تابع دارم ، یعنی باید دو تا دو همش جمع کنم باهم دیگه ؟؟ یاروش دیگری هم هست؟؟؟
مررررسی
سلام اگر مثلا یه چنین ماتریسی داشته باشیم [y x t y; y c r y; v x t y] بعد مثلا بخوام فقط y هایی که توی سطر ال وجود داره رو با 2 عوض کنم چکار باید بکنم؟
با سلام و عرض خسته نباشید
مطلب بالا بسیار مفید بود برای بنده واقعا از زحمات بی دریغ تمامی دستندرکاران این وب سایت کمال تشکر را دارم
با ارزوی موفقیت روز افزون برای همگی شما عزیزان
سلام
تروخدا یکی جواب بده
چطور میشه از روی اندیس به عدد داخلی اون دست پیدا کرد؟؟؟
سلام.
برای دسترسی به مقدار یک عنصر در ماتریس، بر اساس شماره متناظر با آن عنصر، می توان به دو صورت زیر عمل کرد :
1- بدون در نظر گرفتن تعداد ابعاد ماتریس، تنها یک شماره را تعیین می کنیم که بر اساس ترتیب عنصرها در ماتریس می باشد. یعنی تعداد ابعاد ماتریس، هر چه که باشد، باز هم یک ترتیب ساده برای عنصرهای آن وجود دارد.
2- بر اساس تعداد ابعاد ماتریس، به طور دقیق، عنصر را مشخص می کنیم. به عنوان مثال، برای یک ماتریس دو بعدی، شماره ردیف و شماره ستون مربوط به عنصر را به طور دقیق مشخص می کنیم.
برای درک بهتر این موضوع، یک کد متلب (MATLAB) را در ادامه ذکر می کنیم که در آن، سه ماتریس با نام های A و B و C تعریف شده است که A یک ماتریس دو بعدی (اما با یک ردیف و به شکل بردار) و B یک ماتریس دو بعدی (با بیش از یک ردیف و بیش از یک ستون و بردار نیست) و C یک ماتریس سه بعدی می باشد. سپس بر اساس هر یک از دو روش بالا که توضیح دادیم، مقدار یک عنصر خاص از آنها را فراخوانی می کنیم (یک عنصر یکسان از ماتریس، اما فراخوانی به دو روش).
کد متلب (MATLAB) :
3 خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه اجرای کد متلب (MATLAB) :
با سلام. برای پیدا کردن یک بازه باید چه کار کرد؟ برای مثال (row,column] =find(3 سلام. سپاس از شما. ولی سطر و ستون را به ترتیب نمی دهد. آیا روشی هست که بشود آن را ترتیب این ها را از کوچک به بزرگ دید؟ یعنی شماره سطر و ستون عدد 2 و 3 و 5 را به ترتیب بدهد؟ این دستوری که شما نوشتید به ترتیب درایه 5 و 2 و 3 را داده است.
به عنوان مثال، برای بازه 2 تا 5 (یعنی اعداد 2 و 3 و 4 و 5)، کد متلب (MATLAB) زیر را می نویسیم :
نتیجه اجرای کد متلب (MATLAB) بالا :
خدا خیرتون بده عالی
با سلام ببخشید من یک سری داده دلخواه آلوه به نویز ایجاد کردم که می خوام زمانی که که داده های به مقدار پایدار می رسند و تقریبا تغییراتشان ار یک حدی کمتر میشه رو بدست بیارم
داده هامو ایجاد کردم اما زمان یا شماره اولین داده ای که به حالت پایدار نمی تونم تعیین کنم
خیلی ممنون میشم کمک کنید
باتشکر
سلام.من یک درخت رسم کردم میخوام مختصات نودهای درختمو داخل یک متغیر بزارم و بعد از این مختصات برای فاصله نودها از یکدیگر استفاده کنم!با چه دستوری باید انجامش بدم؟لطفا کمک کنید
سلام یه ماتریس دارم
[12,13,14;2,3,4,7,9,11]=A
مقدار عنصر۳×۲چطوری بدست بیارم
میشه ب من بگین ماتریس Aب توان100 رو چجوری پیدا کنم؟
A=1 1/-1 0
سلام خیلی ممنون از سایت فوق العاده شما
یه سوال داشتم از خدمتتون : تو یک ماتریس با دستور find محل یک درایه پیدا شده، الان میخوام با همون محل درایه تو یک ماتریس هم بعد دیگه مقدار درایه رو بدست بیارم، باید چطور بنویستم دستور رو؟
ممنون
سلام وقتتون بخیر
ببخشید من میخام داخل یک ماتریس با سطرهای زیاد و دو ستون آرایه هایی از ماتریس که در سطر اول باهم برابرند رو پیدا کنم و ستون دوم این درایه هایی که باهم برابرند رو باهم جمع کنم یعنی اگر ده تا 100 توی سطر اول داریم این ده تا 100 رو به صورت یک سطر با مقدار 100 نمایش بده که ستون روبروش جمع مقادیر آرایه های ستون های دوم اون 100 سطر باشه
چطوری از دستور find استفاده کنم
ممنون
چطوری میتوانم موقعیت ماکسیمم یک ماتریس 1*22 را پیدا کنم؟ با تشکر اگر جواب بدید ممنون میشوم.