PDA

View Full Version : کمک برای حل مسئله



ehsan_faal
جمعه 28 شهریور 1393, 06:05 صبح
سلام.من یک بردار Z ویک بردار theta با سایز 10000 دارم که اینها رو اینجور مقدار دهی کردم:

Impedance=linspace(20,120,1e4);
theta=linspace(2*pi/(0.1*Lambda),2*pi/(0.125*Lambda),1e4);

اینها رو مش گرید کردم و میخوام ازشون برای حل این سوال استفاده کنم:
کدوم Z ضربدر کدوم theta برابر مقدار تعیین شده توسط خودمه،بعد از این که بردار Z و thetaی جدید معلوم شد، جواب نهایی اینجوری تایید میشه که ، مقداری از Z و theta قابل قبوله که که از بین همه جوابا حاصل تقسیم Z بر theta به یه عدد خاصی که خودم وارد میکنم نزدیک تر باشه.
حالا من میخوام بدونم چطور میشه با کمترین حلقه این کد رو بنویسم.
لطفا کمک کنید.
با تشکر

function [Z0,theta]=Richard(L,Fc)

Fc=Fc*10^9; % Converting Hertz To GHz
Omegac=2*pi*Fc; % Converting Hertz To Grad
L=L*(10^-9); % Converting To N
Lambda=(3e8)/(Fc);
Impedance=linspace(20,120,1e4);
Electrical_Lenght=linspace(2*pi/(0.1*Lambda),2*pi/(0.125*Lambda),1e4);
[Z,El]=meshgrid(Impedance,Electrical_Lenght);
[a,b]=find(Z*El==RSV);
end

rahnema1
جمعه 28 شهریور 1393, 11:30 صبح
سلام،
اگه هدف شما پیدا کردن ماکزیمم یا مینیمم یک تابع دوبعدی هست می تونید مثلا از fmincon یا fminsearch استفاده کنید

ehsan_faal
جمعه 28 شهریور 1393, 19:12 عصر
سلام،
اگه هدف شما پیدا کردن ماکزیمم یا مینیمم یک تابع دوبعدی هست می تونید مثلا از fmincon یا fminsearch استفاده کنید
سلام، نه .فکر میکردم توضیحاتم کامل باشه.از مجموعه های حاصل از مش گرید میخوام اونایی که حاصلضربشون برابر RSV هست رو پیدا کنم و از بین این جوابا اونایی که نسبتشون به عدد دلخواه کاربر نزدیک تره رو هم باز جداکنم.راهی که به ذهن خودم میرسه توش حلقه زیاد داره و من میخوام ببینم با توابع متلب راهی داره که بتونم چیزی که تو ذهنمه رو پیاده سازی کنم.

rahnema1
جمعه 28 شهریور 1393, 20:28 عصر
فکر کنم منظورتون این باشه:

function [Z0,theta]=Richard(L,Fc)

Fc=Fc*10^9; % Converting Hertz To GHz
Omegac=2*pi*Fc; % Converting Hertz To Grad
L=L*(10^-9); % Converting To N
Lambda=(3e8)/(Fc);
Impedance=linspace(20,120,1e4);
Electrical_Lenght=linspace(2*pi/(0.1*Lambda),2*pi/(0.125*Lambda),1e4);
[Z,El]=meshgrid(Impedance,Electrical_Lenght);
a= find(Z.*El==RSV);
adademoredenazar=1;
marhale2=abs(bsxfun(@rdivide,Z(a),El(a))-adademoredenazar);
idx0=find(marhale2==min(marhale2));
idx1=a(idx0);
Z0=Z(idx1);
theta=El(idx1);
end

ehsan_faal
جمعه 28 شهریور 1393, 20:47 عصر
فکر کنم منظورتون این باشه:

function [Z0,theta]=Richard(L,Fc)

Fc=Fc*10^9; % Converting Hertz To GHz
Omegac=2*pi*Fc; % Converting Hertz To Grad
L=L*(10^-9); % Converting To N
Lambda=(3e8)/(Fc);
Impedance=linspace(20,120,1e4);
Electrical_Lenght=linspace(2*pi/(0.1*Lambda),2*pi/(0.125*Lambda),1e4);
[Z,El]=meshgrid(Impedance,Electrical_Lenght);
a= find(Z.*El==RSV);
adademoredenazar=1;
marhale2=abs(bsxfun(@rdivide,Z(a),El(a))-adademoredenazar);
idx0=find(marhale2==min(marhale2));
idx1=a(idx0);
Z0=Z(idx1);
theta=El(idx1);
end

ممنون ، فقط اگه بخوام RSV رو با یه تلورانس چک کنم چی؟ مثلا 10 درصد بالا و پایین مقدارش هم قبول باشه.

rahnema1
جمعه 28 شهریور 1393, 20:57 عصر
a=find(Z.*El <(RSV+RSV * 0.1) & Z.*El>(RSV-RSV * 0.1));

kiamar
چهارشنبه 23 اردیبهشت 1394, 06:49 صبح
سلام
من یکسری بلاک از تصویر کشیدم بیرون و این بلاک 16*16 رو به یک بردار تبدیل کردم ،حالا میخوام فاصله اقلیدسی این بردارهای متناظر بلاکها رو بدست بیارم .و فواصل به دست امده رانیز در یکلیست نگه دارم.میشه کمکم کنید:اشتباه:
131180

rahnema1
چهارشنبه 23 اردیبهشت 1394, 07:08 صبح
سلام
من یکسری بلاک از تصویر کشیدم بیرون و این بلاک 16*16 رو به یک بردار تبدیل کردم ،حالا میخوام فاصله اقلیدسی این بردارهای متناظر بلاکها رو بدست بیارم .و فواصل به دست امده رانیز در یکلیست نگه دارم.میشه کمکم کنید:اشتباه:
131180


سلام
اگه بتونید یک تاپیک جدید برای سوالتون ایجاد کنید و یک عنوان مناسب هم واسه اون بذارید ( مثلا به دست آوردن فاصله اقلیدسی بردارها) شاید این سوال سوال افراد دیگه هم باشه