مرسی. همونی شد که توی پست 146 گذاشتم.
Printable View
سلام مهندس
وقتت بخیر.
ببخشید من یه حلقه دارم که هفت بار اجرا میشه و در هر مرحله (سطر) تعداد ستون های متفاوتی داره. بصورت تصویر زیر.
من چطوری باید سلولش رو تعریف کنم؟ باید یه سلول 7 در 3 بشه. چون نهایتن تعداد ستونها به 3 میرسه.
البته جای اون حروفها اعداد قرار میگیره.
سلام
درست متوجه نشدم ولی مثلا در این مثال x چیزی هست که قراره در هر سطر جا داده بشه
jadval = {};
for i = 1 : 7
jadval{i} = x;
end
برنامه ی من 7 بار با حلقه for اجرا میشه.
در حلقه اول، یه مقدار وجود داره که در سطر اول و ستون اول قرار میگیره. یعنی در سلول a
در حلقه دوم و سوم هم همینطور جای b و c قرار میگیرن.
در حلقه چهارم، دو مقدار بدست میاد که در سطر چهارم و ستونهای اول و سوم قرار میگیرن. یعنی جای d , e
...
درحلقه هفتم، برای x سه مقدار داریم. یعنی یک بردار سه 1 در سه هست، که در سطر 7 و ستون یک تا سه قرار میگیره.
اینو چطوری باید توی یک سلول و یا آرایه ذخیره کنم؟
آرایه باشه بهتره. منظورم بصورت ماتریسی هست.
خب یک آرایه خالی به همین ابعاد 7 در 3 ایجاد کنید و در حلقه مقدار دهی کنید . الان من درست متوجه نمیشم
میخوام مقدار offer توی یک آرایه قرار بگیره. مثل شکلی که قرار دادم :
alpha0=[.4,.52,.6];
beta0=[1.2 1.2 1.2];
lambda=1;
D0=[5.3,3.6,1.3];
m0=[1,1,1];
k=.38;
% % -----------------------------
n=[1 2 3];
for i=1:numel(n)
S{i}=nchoosek(n,i);
end
% % -----------------------------
Coalition=1;
profit=[];
jadval = zeros(7,3);
for i=1:numel(S)
for j=1:size(S{i},1)
alpha=[];
beta=[];
for kk=1:size(S{i},2)
alpha=[alpha ones(1,m0(S{i}(j,kk))).*alpha0(S{i}(j,kk))];
end
for kk=1:size(S{i},2)
beta=[beta ones(1,m0(S{i}(j,kk))).*beta0(S{i}(j,kk))];
end
m=sum(m0(S{i}(j,:)));
D=sum(D0(S{i}(j,:)));
fun_MG0 = @(q,alpha,beta,k,D) -sum((2*alpha.*q+beta + k .*(D-sum(q))).*q -alpha.*(q).^2-beta.*q);
fun_MG = @(q) fun_MG0(q,alpha,beta,k,D) ;
lb=zeros(1,m); % LowerBound
ub=ones(1,m); % UpperBound
[x1, fx1]=fmincon(fun_MG,ones(1,m)*.99,[],[],[],[],lb,ub);
profit(Coalition)=(-fx1);
Coalition = Coalition + 1;
fprintf('\n Emount of Energy :\n');
disp(x1);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer Without Saticfiction Function :\n');
disp(2*alpha.*x1+ beta);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer With Saticfiction Function :\n');
offerr=2*alpha.*x1+ beta + k .*(D- sum(x1));
disp(2*alpha.*x1+ beta + k .*(D- sum(x1)));
fprintf('\n---------------------------------------\n');
end
end
فکر کنم اینجور بذارید درست می شه
offer{i}(j) = 2*alpha.*x1+ beta + k .*(D- sum(x1));
??? Subscripted assignment dimension mismatch.
Error in ==> bbbbbbbb at 46
offer{i}(j) = 2*alpha.*x1+ beta + k .*(D- sum(x1));
این یکی
alpha0=[.4,.52,.6];
beta0=[1.2 1.2 1.2];
lambda=1;
D0=[5.3,3.6,1.3];
m0=[1,1,1];
k=.38;
% % -----------------------------
n=[1 2 3];
for i=1:numel(n)
S{i}=nchoosek(n,i);
end
% % -----------------------------
Coalition=1;
profit=[];
jadval = zeros(7,3);
offer={};
for i=1:numel(S)
offerr_array=[];
for j=1:size(S{i},1)
alpha=[];
beta=[];
for kk=1:size(S{i},2)
alpha=[alpha ones(1,m0(S{i}(j,kk))).*alpha0(S{i}(j,kk))];
end
for kk=1:size(S{i},2)
beta=[beta ones(1,m0(S{i}(j,kk))).*beta0(S{i}(j,kk))];
end
m=sum(m0(S{i}(j,:)));
D=sum(D0(S{i}(j,:)));
fun_MG0 = @(q,alpha,beta,k,D) -sum((2*alpha.*q+beta + k .*(D-sum(q))).*q -alpha.*(q).^2-beta.*q);
fun_MG = @(q) fun_MG0(q,alpha,beta,k,D) ;
lb=zeros(1,m); % LowerBound
ub=ones(1,m); % UpperBound
[x1, fx1]=fmincon(fun_MG,ones(1,m)*.99,[],[],[],[],lb,ub);
profit(Coalition)=(-fx1);
Coalition = Coalition + 1;
fprintf('\n Emount of Energy :\n');
disp(x1);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer Without Saticfiction Function :\n');
disp(2*alpha.*x1+ beta);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer With Saticfiction Function :\n');
offerr_array(j)=2*alpha.*x1+ beta + k .*(D- sum(x1));
disp(2*alpha.*x1+ beta + k .*(D- sum(x1)));
fprintf('\n---------------------------------------\n');
end
offer{i} = offerr_array;
end
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> aaaaaaaaaaaaa at 46
offerr_array(j)=2*alpha.*x1+ beta + k .*(D- sum(x1));
این یکی دیگه فکر کنم مشکل ایجاد نکنه
alpha0=[.4,.52,.6];
beta0=[1.2 1.2 1.2];
lambda=1;
D0=[5.3,3.6,1.3];
m0=[1,1,1];
k=.38;
% % -----------------------------
n=[1 2 3];
for i=1:numel(n)
S{i}=nchoosek(n,i);
end
% % -----------------------------
Coalition=1;
profit=[];
jadval = zeros(7,3);
offer={};
for i=1:numel(S)
offer_cell={};
for j=1:size(S{i},1)
alpha=[];
beta=[];
for kk=1:size(S{i},2)
alpha=[alpha ones(1,m0(S{i}(j,kk))).*alpha0(S{i}(j,kk))];
end
for kk=1:size(S{i},2)
beta=[beta ones(1,m0(S{i}(j,kk))).*beta0(S{i}(j,kk))];
end
m=sum(m0(S{i}(j,:)));
D=sum(D0(S{i}(j,:)));
fun_MG0 = @(q,alpha,beta,k,D) -sum((2*alpha.*q+beta + k .*(D-sum(q))).*q -alpha.*(q).^2-beta.*q);
fun_MG = @(q) fun_MG0(q,alpha,beta,k,D) ;
lb=zeros(1,m); % LowerBound
ub=ones(1,m); % UpperBound
[x1, fx1]=fmincon(fun_MG,ones(1,m)*.99,[],[],[],[],lb,ub);
profit(Coalition)=(-fx1);
Coalition = Coalition + 1;
fprintf('\n Emount of Energy :\n');
disp(x1);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer Without Saticfiction Function :\n');
disp(2*alpha.*x1+ beta);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer With Saticfiction Function :\n');
offer_cell{j}=2*alpha.*x1+ beta + k .*(D- sum(x1));
disp(2*alpha.*x1+ beta + k .*(D- sum(x1)));
fprintf('\n---------------------------------------\n');
end
offer{i} = offer_cell;
end
ممنونم. درست شد ولی سلولهای تو در تو شد.
یکمی فراخونی کردنش سخت شد.
نمیشه همه در یک آرایه قرار بگیرن؟ من دقیقاً مثل همون شکل میخوام.
ظاهرا سایز این offer ها مختلفه که نمیشه داخل آرایه قرار بگیره
خب نمیشه خونه هایی که خالی هست تهی یا صفر باشه؟
من ادامه برنامه کد پایین رو گذاشتم ولی نمیدونم بجای xxx چی باید بذارم؟
m = zeros(7, 3);
for i=1:7
for j=1:3
m(i,j) = xxx;
end
end
الان من نمیدونم محتوای این سلول چیه و چند در چند هست اگه بتونید فقط offer را در فایل mat بذارید و بفرستید ببینم چه شکلی داره
این را امتحان کنید
matcell = cell2mat(offer);
size_col = 0;
size_row = numel(matcell);
for i = 1: size_row
size_col = max(size_col , numel(matcell{i}));
end;
mat = zeros(size_row, size_col);
for i = 1: size_row
mat(i,1:numel(matcell{i})) = matcell{i};
end
??? Error using ==> cell2mat at 55
Cannot support cell arrays containing cell arrays or objects.
Error in ==> aaaaaaaaaaaaa at 53
matcell = cell2mat(offer);
این یکی
size_col = 0;
size_row = 0;
for i= 1:numel(offer)
offeri = offer{i};
size_row = size_row + numel(offeri);
size_col = size_col + size(offeri, 2);
end
mat = zeros(size_row, size_col);
k = 1;
for i= 1:numel(offer)
offeri = offer{i};
for j = 1:numel(offeri)
mat(k, 1:numel(offeri{j})) = offeri{j};
k= k + 1;
end
end
طیب الله :)درست شد.
clc;
clear all;
close all;
x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
for i=1 : 50
if x(i)>40 && x(i)<60
plot(x(i),y(i),'ro')
hold on;
else
plot(x(i),y(i),'o')
end
end
سلام استاد عزیز!
ببخشید من یه فایلی توی اکسل دارم که میخوام ستون C و D رو پیش هم قرار بدم (بدون فاصله) و بعد توی فایل txt ذخیره کنم.
از سمت چپ، اول C قرار بگیره و بعد D.
یعنی بشه CD . بعبارتی یه عدد 25 رقمی بشه. ضمن اینکه توی هر ستون اگه اعداد کمتر از حالت پیش فرض هستن، قبلش صفر قرار بگیره.
میشه این کار رو با متلب انجام داد؟فایل اکسل :
http://www.sharefile.ir/uploads/1443432750.xlsx
به این صورت :
http://www.sharefile.ir/uploads/1443454165.jpg
سلام به شما استاد گرامی
توی خود اکسل هم می شه انجام داد
http://www.sharefile.ir/uploads/1443474459.xls
سلام
فقط مقدار اول رو توی خروجی نشون میده.یعنی (P). ولی S رو نشون نمیده!
function [P , S]=func(r)
P = 2*r*pi;
S = r*r*pi;
fprintf('Mohit = %f & Masahat = %f\n\n',P,S);
end
clc;
clear;
r = input('\n Please Enter Radius : ');
func(r);
سلام
من یه چند جمله ای دارم که درجه جملاتش مرتب نیست. با چه دستوری میتونم از بزرگ به کوچیک مرتبش کنم؟
سلام
چطوری میتونم اعدادی که در m1 ایجاد شده رو ببرم توی txt و در هر سطر، اعداد با سمی کالون جدا بشه؟
m = rand(1,100)
m1 = reshape(m , 10 ,10 )'
بصورت زیر :
0.8147;0.9058;0.1270;0.9134;0.6324;0.0975;0.2785;0 .5469;0.9575;0.9649
num2str(m1, '%f;')
با فرمت csv ذخیره کنید
چرا csv ؟؟
همون دستوری که گفتین مشکلم حل شد.
حالا خواستم ببینم اگه نخوام با متلب این کار رو انجام بدم ، آیا با خود اکسل میشه این کار رو انجام داد؟
ببینید من یه داده 100 در 1 توی اکسل دارم که میخوام هر کدوم رو 10 تا 10 تا جدا کنم و توی 10 تا سطر بذارم و سپس با سمی کالن جداشون کنم و توی txt قرار بگیره.
با دستوری که توی متلب گفتید انجام دادم و حل شد. حالا میخوام بدونم با اکسل چطوری میتونم این کار رو انجام بدم که دیگه نیاز به متلب نباشه!
فکر کنم لازمه 10 تا ده تا توی هر ستون کپی کنید و نهایتا با کلیک روی save با فرمت CSV ذخیره کنید توی اونجا می تونید مشخص کنید کاما یا سمی کالن بذاره
سلام
میشه با دستورات متلب، یه سایتی رو باز کرد و دستور داد که مثلاً هر 1 دیقه یک بار رفرش کنه؟ یا یه عملیات دیگه ای روش انجام بده؟
و یا اینکه یه نرم افزار جانبی دیگه ای رو باز کنه و اجرا کنه؟
سلام
چطوری میشه این معادله دیفرانسیل مرتبه دوم رو توی متلب حل کرد؟ با دستور dsolve یک معادله رو میشه حل کرد؟
بله میشه؛ چند تا سؤال پرسیدید؛ یکی یکی با جزئیات بپرسید، تا ببینیم چه کاری می خواید انجام بدید.
از سؤال اول، ظاهراً دنبال web scarping با متلب هستید. متلب چند تا دستور واسه این کار داره، مثل دستورهای زیر:urlread, urlwrite, web, webread
اما متلب در این زمینه یه مقدار ضعیفه، ولی میشه یک com server درست کرد و از دستورهای VBA مربوط به web scraping توی متلب استفاده کرد.
در مورد سؤال دوم، اگه نرم افزار مورد نظر API داشته باشه، میشه از طریق متلب باهاش interface ایجاد کرد و همه کاری کرد، اما اگه API نداشته باشه، بدبختیه، ولی غیرممکن نیست؛ باید دقیقاً نرم افزارش مشخص باشه چیه، بعد ببینید که قبلاً کسی همچین کاری کرده یا نه. اگه کسی کاری نکرده باشه، اون وقت باید کلی وقت بذاری تا یه راهی براش پیدا کنی. یکی از آخرین راههای پیشنهادی، استفاده از دستور robot زبان Java هست که می تونید توی متلب استفاده کنید.
از dsolve استفاده نکنید؛ از روشهای عددی استفاده کنید، اونهایی که دستورشون با ode شروع میشه؛ مثل ode23
بعدش هم خود دستگاه معادلات رو به صورت یک mفایل تابع تعریف کنید.
اگه بلد نیستید، بخش 1 و 5 کتاب "شگردهای عددی در پاسخیابی پرسشهای مهدسی با برنامه ریزی MATLAB" رو بخونید.
پ.ن.: به نظرم اینها معادلات دیفرانسیل ارتعاشات آونگ دوگانه باشه
سلام
کسی هست بتونه این رابطه رو توی متلب کد بزنه یا حداقل معادلش رو توی زبانهای دیگه بگه چطوریه؟
من کد رو به این صورت نوشتم ولی انگار دستوری که برای sum نوشتم اشکال داره!
clc;
clear;
close all;
alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;
upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*sum((-1)^(k)*binomial(alpha,k)*f(t-k*h), k = 0..upper_band);
f(t) = limit(expr,h,0)
خطایی که میده بصورت زیره:
Error: File: letnikov.m Line: 12 Column: 67
The expression to the left of the equals sign is not a valid target for an
assignment.
من مشکل بالایی رو حل کردم و کدش بصورت زیر شد :
clc;
clear;
close all;
alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;
upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*binomial(alpha,k)*f(t-k*h), k , 0 ,upper_band);
f(t) = limit(expr,h,0)
حالا خطایی که میده برای binomial هست.
بصورت زیر :
Undefined function 'binomial' for input arguments of type 'double'.
Error in letnikov (line 12)
expr = (1./(h.^alpha))*symsum(((-1).^(k))*binomial(alpha,k)*f(t-k*h), k , 0
,upper_band);
خطای قبلی رو هم برطرف کردم و کد جدید بصورت زیر شد:
clc;
clear;
close all;
alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;
upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0 ,upper_band);
f(t) = limit(expr,h,0)
و الآن خطای جدید روی f هست.
Undefined function 'f' for input arguments of type 'double'.
Error in letnikov (line 12)
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0
,upper_band);
سلام دوستان
کسی میدونه فرق machine learning با deep learning چیه؟؟؟
و اینکه عملکرد کدوم بهتره؟
سلام
ببخشید. میشه بیشتر راهنمایی کنید؟
من بصورت زیر نوشتم :
function f = Letnikov(alpha)
% alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;
upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0 ,upper_band);
f(t) = limit(expr,h,0)
با سلام خدمت دوستان.
من یه جدولی دارم که 10 ستون اول مقادیر پارامترها و دو ستون آخر توابع هزینه هستن.
میخوام توابع هزینه رو با نمودار Pareto رسم کنم. و بهترین تابع هزینه مشخص بشه.
کسی هست بتونه راهنماییم کنه؟