آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

تشخیص وجود یک عدد در یک ماتریس و موقعیت آن عدد در ماتریس، با دستور find در متلب

اگرچه دستور find در متلب، می تواند کاربردهای مختلفی داشته باشد، اما یکی از کاربردهای آن، یافتن یک عدد در یک ماتریس می باشد و حتی موقعیت آن عدد در ماتریس را هم به ما می دهد. در ادامه با چند مثال، چگونگی استفاده از دستور find برای این منظور و همچنین روش های مختلف یافتن موقعیت عدد در ماتریس را شرح خواهیم داد.

مثال

در ماتریس A ، چک می کنیم که آیا عدد 2 وجود دارد یا خیر. دستور find ، موقعیت عدد 2 در ماتریس را به صورت ((چندمین عنصر ماتریس)) بر می گرداند :


clear all
close all
clc

A=[1 2 3; 5 6 7]
B=find(A==2)

نتیجه :


A =

     1     2     3
     5     6     7


B =

     3

چون سومین عنصر ماتریس A برابر 2 بوده است، بنابراین دستور find ، عدد 3 را بر می گرداند.

مثال

این بار همان مثال قبلی را به گونه ای می نویسیم که دستور find ، شماره ردیف و ستون عناصری از ماتریس A که برابر 2 می باشند را به ما بدهد. شماره ردیف این عناصر، در بردار row و شماره ستون آنها، در بردار column ذخیره خواهد شد :


clear all
close all
clc

A=[1 2 3; 5 6 7]
[row,column]=find(A==2)

نتیجه :


A =

     1     2     3
     5     6     7


row =

     1


column =

     2
مثال

clear all
close all
clc

A=[3 4 2; 5 2 7]
[row,column]=find(A==2)

نتیجه :


A =

     3     4     2
     5     2     7


row =

     2
     1


column =

     2
     3
نویسنده علیرضا گلمکانی
شماره کلید 180
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 32 29 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 رو درست برگشت میده ولی دفهع های بعد تکراریه!

mastaneh
۱۳۹۶/۰۸/۱۸
۱۵:۳۶

سلام.با تشکر از پیج مفیدتون یه سوال داشتم ؟
من میخوام توی یک ماتریس similarity تمام ماکزیمم‌های ماتریس و همینطور موقعیت سطر و ستون اون رو بدونم.میشه راهنمایی بفرمایید؟ 

سعید
۱۳۹۶/۱۲/۱۴
۱۰:۵۷

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

sheyda
۱۳۹۷/۰۲/۲۰
۱۸:۳۷

سلام چه طور میتونم مقدار عددی x مربوط به Y مشخصی را پیدا کنم برای مثال 


میخوام بگم برای Y=1 مقدار X مربوط به آن چقدر است و برایم X=3.528 را چاپ کند
مررسی

admin
۱۳۹۷/۰۲/۲۰
۱۸:۵۴

سلام.
چنانچه بخواهیم از دستور find استفاده کنیم، کد متلب (MATLAB) زیر را می نویسیم :


سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.

نتیجه اجرای کد متلب (MATLAB) بالا :


اما اگر نخواهیم از دستور find استفاده کنیم، کد متلب (MATLAB) زیر را می نویسیم :


دستور size برای به دست آودرن اندازه یک ماتریس به کار می رود.

نتیجه اجرای کد متلب (MATLAB) بالا :



sheyda
۱۳۹۷/۰۲/۲۰
۱۹:۳۵

مرررررررررسی خداوند خیرتون بده

sheyda
۱۳۹۷/۰۲/۲۱
۰۹:۴۹

سلام اگر در یک تابع عضویت مثلثی بخوام به اعضای 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
واقعااااااااا ممنون میشم به این سوالم هم جواب بدید.

admin
۱۳۹۷/۰۲/۲۳
۱۸:۴۷

سلام.
نرم افزار متلب (MATLAB) همه رقم های اعشاری اعداد را در خروجی نمایش نمی دهد و آن عنصر از ماتریس، دقیقا برابر 0.9667 نمی باشد.
در این زمینه، در مورد دستور format را بخوانید.
بنابراین در شرط دستور if ، یا باید مقدار دقیق عنصر مورد نظرتان را قرار دهید و یا اینکه اصلا مقادیر ماتریس اصلی را تا 4 رقم اعشار، گرد کنید، تا تنها 4 رقم اعشار داشته باشد و بقیه رقم های اعشاری آن صفر باشد.

sheyda
۱۳۹۷/۰۲/۳۰
۱۶:۲۰

سلام ببخشید در متلب تابع    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 عوض کنم چکار باید بکنم؟

rasul
۱۳۹۷/۰۵/۱۰
۱۵:۵۰

با سلام و عرض خسته نباشید
مطلب بالا بسیار مفید بود برای بنده واقعا از زحمات بی دریغ تمامی دستندرکاران این وب سایت کمال تشکر را دارم 
با ارزوی موفقیت روز افزون برای همگی شما عزیزان

elahe
۱۳۹۷/۰۵/۲۲
۰۱:۲۱

سلام
تروخدا یکی جواب بده
چطور میشه از روی اندیس به عدد داخلی اون دست پیدا کرد؟؟؟

admin
۱۳۹۷/۰۵/۲۴
۲۲:۲۴

سلام.
برای دسترسی به مقدار یک عنصر در ماتریس، بر اساس شماره متناظر با آن عنصر، می توان به دو صورت زیر عمل کرد :
1- بدون در نظر گرفتن تعداد ابعاد ماتریس، تنها یک شماره را تعیین می کنیم که بر اساس ترتیب عنصرها در ماتریس می باشد. یعنی تعداد ابعاد ماتریس، هر چه که باشد، باز هم یک ترتیب ساده برای عنصرهای آن وجود دارد.
2- بر اساس تعداد ابعاد ماتریس، به طور دقیق، عنصر را مشخص می کنیم. به عنوان مثال، برای یک ماتریس دو بعدی، شماره ردیف  و شماره ستون مربوط به عنصر را به طور دقیق مشخص می کنیم.
برای درک بهتر این موضوع، یک کد متلب (MATLAB) را در ادامه ذکر می کنیم که در آن، سه ماتریس با نام های A و B و C تعریف شده است که A یک ماتریس دو بعدی (اما با یک ردیف و به شکل بردار) و B یک ماتریس دو بعدی (با بیش از یک ردیف و بیش از یک ستون و بردار نیست) و C یک ماتریس سه بعدی می باشد. سپس بر اساس هر یک از دو روش بالا که توضیح دادیم، مقدار یک عنصر خاص از آنها را فراخوانی می کنیم (یک عنصر یکسان از ماتریس، اما فراخوانی به دو روش).
کد متلب (MATLAB) :


3 خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه اجرای کد متلب (MATLAB) :



آرمین هاشمی
۱۳۹۷/۰۸/۳۰
۲۱:۰۴

با سلام. برای پیدا کردن یک بازه باید چه کار کرد؟ برای مثال (row,column] =find(3

admin
۱۳۹۷/۰۸/۳۰
۲۱:۲۹

سلام.
به عنوان مثال، برای بازه 2 تا 5 (یعنی اعداد 2 و 3 و 4 و 5)، کد متلب (MATLAB) زیر را می نویسیم :




نتیجه اجرای کد متلب (MATLAB) بالا :



آرمین هاشمی
۱۳۹۷/۰۹/۰۱
۱۱:۲۹

سپاس از شما. ولی سطر و ستون را به ترتیب نمی دهد. آیا روشی هست که بشود آن را ترتیب این ها را از کوچک به بزرگ دید؟ یعنی شماره سطر و ستون عدد 2 و 3 و 5 را به ترتیب بدهد؟ این دستوری که شما نوشتید به ترتیب درایه 5 و 2 و 3 را داده است.

جواد
۱۳۹۷/۰۹/۱۶
۱۳:۵۱

خدا خیرتون بده عالی

مرضیه
۱۳۹۷/۰۹/۲۳
۱۳:۰۰

با سلام ببخشید من یک سری داده  دلخواه آلوه به نویز ایجاد کردم که می خوام زمانی که که داده های به مقدار پایدار می رسند و تقریبا تغییراتشان ار یک حدی کمتر میشه رو بدست بیارم
داده هامو ایجاد کردم اما زمان یا شماره اولین داده ای که به حالت پایدار نمی تونم تعیین کنم
خیلی ممنون میشم کمک کنید
باتشکر

برنامه ای که نوشتم

clc;
clear all;
close all;

sigm_noise=0.7;%واريانس نويز دلخواه
u=[7 11 15 19 24 28 32 37 41 42 43.22 43.12 43.26 43.23 43.234 43.235 43.234 43.233 43.232 43.233 43.235];
N=length(u);%تعداد داده ها
N1=N;
ep=wgn(1,N,0);%نويز سفيد
sigm_ep=1/(N)*sum(ep.^2);% واريانس نويز سفيد
noise=sqrt(sigm_noise/(sigm_ep))*ep;% ايجاد نويز با واريانس مورد نظر
y=zeros(1,N);
for t=2:N
y(t)=u(t)+noise(t);


figure (1)
subplot(2,1,1);stairs(1:1:N,y,'b','linewidth',2);grid on;axis([1 N -100 100]);ylabel('y');
subplot(2,1,2);stairs(1:1:N,u,'b','linewidth',2);grid on;axis([1 N -60 60]);ylabel('u');xlabel('sample');

% تعيين زمان پايداري
limit = 1;

while 1
    tmp =y(N)-y(N-1);
    if tmp < limit
A=t;
    end
   
   break
end
end

مژگان۲۰
۱۳۹۸/۰۷/۰۶
۰۹:۴۶

سلام.من یک درخت رسم کردم میخوام مختصات نودهای درختمو داخل یک متغیر بزارم و بعد از این مختصات برای فاصله نودها از یکدیگر استفاده کنم!با چه دستوری باید انجامش بدم؟لطفا کمک کنید

سجاد
۱۳۹۸/۱۰/۱۴
۱۷:۲۳

سلام یه ماتریس دارم
[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 را پیدا کنم؟ با تشکر اگر جواب بدید ممنون میشوم.

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)