سلام مهندس عزیز
یه سوال :
من اگه یه آرایه 1 در 100 داشته باشم. چطوری میتونم هر 10 تا 10 تا عدد رو در یک سطر قرار بدم؟
m = rand(1,100)
مثلاً 10 تای اول در سطر اول، 10 تا دوم در سطر دوم و ...
Printable View
سلام مهندس عزیز
یه سوال :
من اگه یه آرایه 1 در 100 داشته باشم. چطوری میتونم هر 10 تا 10 تا عدد رو در یک سطر قرار بدم؟
m = rand(1,100)
مثلاً 10 تای اول در سطر اول، 10 تا دوم در سطر دوم و ...
مرسی. تازه با دستور reshape آشنا شدم :)
یادم میاد توی هفت بیجار قبلی گفته بودم یه نگاهی به یک فایل pdf به نام refcard متلب بندازید که دستورات مهم و پرکاربرد متلب داخلش هست مثل این:
http://www.geog.ucsb.edu/~pingel/210...ab_refcard.pdf
بله. چندتا از اون فایل ها رو هم دانلود کردم ولی بعضیا رو نمیدونم که کاربردشون کجاست.
واسه همین سوال هم من فکر میکردم که باید برنامه بنویسیم!
دوباره باید یه نگاهی بندازم. ممنونم که یادآوری کردین :)
اینو چطوری میتونم توی متلب اجرا کنم :
u = K D
که K یک عدد ثابت و D اپراتور مشتق نسبت به زمان است. برای من D مهمه که چطوری باید نوشته بشه!
اینو میشه به ماتریس تبدیل کرد؟
RA = {1 [1 0];[-1 2] 3}
خواستم از دستور cell2mat استفاده کنم ولی خطا داد!
??? Error using ==> cat
CAT arguments dimensions are not consistent.
Error in ==> cell2mat at 89
m{n} = cat(1,c{:,n});
چه ماتریسی باید بشه؟ چند در چند؟ عناصر در کدام خانه ماتریس قرار بگیرند؟
فکر کنم اینجور بهتر باشه
arr = [];
for i = 1:size(RA, 1)
arr = [arr; cell2mat(RA(i, :))];
end
disp(arr)
ممنونم. با این کد انجام شد ولی دلیل اینکه مستقیم با دستور cell2mat انجام نمیشه چیه؟
مگه سلول باید مربعی باشه؟ چون یه سلول مربعی رو تست کردم شده بود!
علتش اینه که ابتدا عناصری که در یک ستون قرار دارند به صورت سطری با هم تر کیب میشن. سپس اون ترکیب به صورت ستونی با هم انجام می گیره اگه ابعاد اونها جوری باشه که نتونن ترکیب بشن خطا میده
مثلا این را ببینید
C = {[1], [2 3 4];
[5; 9], [6 7 8; 10 11 12]}
1 2 3 4
5 6 7 8
9 10 11 12
روند ترکیب به این صورته:
1 2 3 4
5 6 7 8
9 10 11 12
1 2 3 4
5 6 7 8
9 10 11 12
اما در مثال شما یه همچین چیزی داریم
[1] [1 0]
[-1 2] [3]
حالا عناصر موجود در ستون 1 می خواهند باهم ترکیب بشن به این صورت
[1; -1 2]
به علت اینکه ابعادشون متناسب نیست خطا میده
با این حساب میشه از عناصر داخل سلول ترانسپوز بگیرید که ابعاد عناصر موجود در یک ستون باهم هماهنگ بشه
transRA = cellfun('transpose', RA', 'UniformOutput', false)
cell2mat(transRA)'
توی متلب دستوری وجود داره که یک رشته رو بگیره و تک تک حروف رو از هم جدا کنه؟ و بعدش بتونه حروف رو بصورت رندوم قاطی کنه؟
ممنونم.
اگه بخوام هر حرفی که چاپ شد، یک فاصله قرار بده چی؟یا بینشون با ویرگول جدا شده باشه!
مثلاً همین رشته ی بالا رو بصورت زیر نشون بده :
d p i a w n a s g o o i d e l T i h s t f s e m a
کار repmat چیه؟ مثل reshape عمل میکنه؟
دقیقاً متوجه نشدم آرگومان داخل repmat چیکار میکنه!
یه سوال دیگه :
میشه کاری کرد که space داخل رشته جز کاراکتر حساب نشه؟
repmat برای تکرار یک چیز به تعداد دلخواهه
مثلا میخوام به تعداد 5 بار حرف اسپیس پشت سر هم تکرار بشه یا اینکه بخوام یک آرایه را چند بار پشت سر هم تکرار کنم
برای حذف اسپیس:
reshte(reshte ~= ' ')
سلام
میخوام یه برنامه بنویسم که اعداد تصادفی ایجاد کنه بین 0 تا 100 برای x و y . بعد پلات کنه. ضمن اینکه مقادیری که در بازه ی 40 تا 60 قرار دارند رو با یه رنگ جداگانه ای نشون بده. من اینطوری نوشتم ولی جواب نمیده :
clc;
clear all;
close all;
x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
if x>40 & x<60
plot(x,y,'ro')
else
plot(x,y,'o')
end
سلام
نمیدونم نظورتون را درست دریافت کردم یا نه
x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
indexX = x > 40 & x < 60;
plot(x(indexX),y(indexX),'ro')
hold on;
plot(x(~indexX),y(~indexX),'go')
ممنونم. دقیقاً همینو میخواستم. حالا اگه بخوایم برای y هم محدوده بذاریم باید indexY درست کنیم؟
من به صورت زیر نوشتم ولی خطا میده :
x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
indexX = x > 40 & x < 60;
indexY = y > 40 & y < 60;
plot(x(indexX),y(indexY),'ro')
hold on;
plot(x(~indexX),y(~indexY),'go')
مهندس ببخشید،
قبلاً یه کد فازی نوشته بودی که میومد یک رنج از اعداد رو به دو گروه تقسیم می کردد. من یه مقاله دیدم که میومد قوانین فازی و توابع عضویت رو با استفاده از الگوریتم بهینه سازی، بهینه میکرد تا جواب بهتری بگیریم. حالا این کدی که پایین میذارم زیاد قانون و توابع عضویت نداره. اگه زیاد باشه میشه از این الگوریتمها استفاده کرد. میخوام بدونم چطوری این فازی با این الگوریتم ها ارتباط برقرار میکنه؟شما اطلاعی دارید؟
مثلاً بشه قوانین و توابع عضویت یک سیستم فازی رو با الگوریتم ژنتیک، PSO و یا cuckoo بهینه سازی کرد!
clc;
clear all;
close all;
P =unifrnd(1,100,1,20);
Range=0:100;
aa = newfis ('sefroyek', 'sugeno', ...
'min', 'max', ...
'min', 'max', 'wtaver');
aa = addvar (aa, 'input', 'P', [min(Range) max(Range)]);
aa = addmf (aa, 'input', 1, 'Low', 'trapmf', [min(Range)-5 min(Range) range(Range)*0.45+min(Range) range(Range)*0.55+min(Range)]);
aa = addmf (aa, 'input', 1, 'High', 'trapmf', [range(Range)*0.45+min(Range) range(Range)*0.55+min(Range) max(Range) max(Range)+5]);
aa = addvar (aa, 'output', 'sefroyek', [0 1]);
aa = addmf (aa, 'output', 1, 'Low', 'constant', 0);
aa = addmf (aa, 'output', 1, 'High', 'constant',1);
aa = addrule (aa, [1 1 1 1;2 2 1 1]);
% plotfis(aa)
figure
plotmf (aa, 'input', 1);
% plotmf (aa, 'output', 1);
pp=evalfis(P,aa) ;
fprintf('\n\nCoalition of Group 1 :\n P1 =');
iGroup1=find(pp<0.5);
P1=P(iGroup1); disp(P1);
fprintf('\n\nCoalition of Group 2 :\n P2 =');
iGroup2=find(pp>=0.5);
P2=P(iGroup2); disp(P2);
ANFIS با استفاده از شبکه عصبی پارامترهای تابع عضویت را بهینه می کنه
سلام.
من دو قسمت داده دارم که اومدم رگرسیون خطی رو بدست آوردم. میخوام ایندو تا رو با subplot توی یک figure قرار بدم. کد پایین رو نوشتم ولی نشد!
کجاش اشتباهه؟
clc;
clear;
close all;
x1=rand(1,100);
y1=x1+0.1*rand(1,100);
subplot(1,2,1)
plotregression(x1,y1);
x2=rand(1,100);
y2=x2+0.1*rand(1,100);
subplot(1,2,2)
plotregression(x2,y2);
یه سوال دیگه :
من یه رشته دارم بصورت زیر :
st='ABC def:1393'
اگه بخوام یک قسمتی از رشته رو حذف کنم چطوریه؟ مثلاً بخوام سه حرف اول که ABC هست رو حذف کنم.
ببخشید یه سوال دیگه هم دارم:
روابطی که پایین گذاشتم، بدست آورن انتگرال خطای مطلق یا همون Integral of Absolute Error (IAE) یک سیستم برای ارزیابی نتایج هست :
من یه قسمتی از این روابط رو با کد نوشتم. نمیدونم درسته اینطوری یا نه!
حالا نمیدونم چطوری باید وزنگذاری بکنم.
t=0:0.5:200;
out1=rand(1,100);
out2=rand(1,100);
e1=.1*out1;
e2=.1*out2;
f1=int(abs(e1),0,t)+int(abs(e2),0,t);
f2=int(abs(out1(t)-out1(t-1)),0,t)+int(abs(out2(t)-out2(t-1)),0,t);
مهندس مرسی. حل شد. ولی هنوز یه مشکلی دارم!
کدش به این صورته :
x1=rand(1,100);
y1=x1+0.1*rand(1,100);
x2=rand(1,100);
y2=x2+0.1*rand(1,100);
plotregression(x1,y1,'Link(1)',x2,x2,'Link(2)');
تصویرش به این صورت شد:
حالا میخوام این عبارت Link(1) که مینویسم سطر اول باشه و مقدار رگرسیون رو که خودش نمایش میده سطر پایین باشه. نمیشه؟
بعد میخوام یه مقادیری رو هم بعد از مقدار رگرسیون اضافه کنم. مثل RMSE و ....
وقتی یه تصویر بود تونستم با دستور title این کار رو انجام بدم ولی الآن که دوتایی شد نمیشه!
خب اگه از دستور sum استفاده کنیم که فقط یک عدد اسکالر داریم!
من باید باید انتگرال رو در هر زمان جدا گانه حساب کنم تا یک بردار داشته باشم. مگه اینطوری نیست؟
چون میخوام مثل همون رگرسیون یه نمودار رسم کنم.
در مورد وزن هم چیزی صحبت نکرده. احتمالاً مانند ماتریس هست که باید برای هر درایه ارزش گذاری کنیم.
نظر شما چیه؟
حالا این اسم چه ربطی به این تاپیک داره....:متفکر:
آقای (مهندسسسسسس) کرونا جوابشو تو پیام خصوصی بهم دادن که اینجا میذارم البته ایشون کلا 2 تا تاپیک بیشتر تو این سایت ایجاد نکردن اولیش به نام حل تابع چند جمله ای بود که حدود 500 تا پست داخلش ایجاد شد از مطالب مختلف:
https://barnamenevis.org/showthread.php?460429
دومیش هم هفت بیجاره
نقل قول:
نوشته شده توسط coronaa
مهندس من به این صورت میخوام :
تصویر رگرسیون هست ولی من تایتلش رو ادیت کردم و خودم یه سری رشته و عدد بهش اضافه کردم. کد بصورت زیره :
plotregression(reff1,q1);
h1=get(gca,'Title');
st1=get(h1,'String');
st1=st1(12:end);
title({'Validation of Link(1)';[st1,' & ' 'R^2 = ' num2str(R2_1),' & ' 'RMSE = ' num2str(sqrt(MSE1))]});
ولی برای دوتا تصویر یکجا نمیشه!
فکر کنم دستور رگرسیون تو متلب زیاد باشه اگه بتونی از یکی دیگه استفاده کن
متاسفانه برنامه octave دستور plotregression نداره وگرنه حتما امتحانش میکردم
باید اینجور باشه قاعدتا
f2 = sum(abs(diff(out1))) + sum(abs(diff(out2)));