-
تعداد ارسال ها
112 -
تاریخ عضویت
-
آخرین بازدید
تمامی مطالب نوشته شده توسط ehsan_faal
-
متاسفانه سوالتون خیلی گنگه! دنبال الگوریتمی هستین که داریه های یک ماتریس رو به توان یه عدد برسونه و نهایتا درایه ها با هم برابر بشن؟ اصلا این کار شدنیه؟
- 8 پاسخ
-
- 1
-
-
این Option به شما این امکانو میده که مینیمم مقدار پیک ها رو تعیین کنی.مثلا بگی پیک هایی که حداقل مقدار 2 دارند ... Use findpeaks to locate and plot the peaks that have a prominence of at least 4 . findpeaks(PeakSig,x,'MinPeakProminence',4,'Annotate','extents')
- 3 پاسخ
-
- 2
-
-
سلام .از منوی Preferences گزینه Color رو بزنید ، بعد از قسمت سمت راست Variable and Function Colors میتونید رنگهای مورد علاقتون رو set کنید.
- 1 پاسخ
-
- 1
-
-
حل سوال پنجم: 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20? function LCM=Problem5(n) LCM=1; for Counter=1:n LCM=LCM*Counter/(gcd(LCM,Counter)); end end
- 31 پاسخ
-
- 2
-
-
حل مسئله چهارم: A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers. function S=Problem4(n) tic Interval=10^(n-1):10^(n)-1; [Product1,Product2]=meshgrid(Interval); Func=@(X,Y) X*Y; Temp=cell2mat(arrayfun(Func,Product1,Product2,'UniformOutput',false)); Palindrome=@(X) all(num2str(X)==fliplr(num2str(X))); Temp2=unique(Temp(:)); S=max(Temp2(arrayfun(Palindrome,Temp2))); toc end جواب: Problem4(3) Elapsed time is 40.146033 seconds. ans = 906609 تو متلب یکم طول میکشه تا جواب رو پیدا کنه البته من سعی کردم تا جایی که بلد بودم از توابع موجود استفاده کنم تا سرعت پایین نیاد.کد رو به زبون جاوا هم میذارم، اونجا خیلی زودتر به جواب رسید: public static void main(String[] args) { long Start=System.nanoTime(); int M=3; long[] Interval=ProductInterval(Interval(M)); for(int Counter=0;Counter< Interval.length;Counter++) { if (!IsPalindrome(Interval[Counter])) Interval[Counter]=0; } Arrays.sort(Interval); System.out.println("The Answer Is: "+Interval[interval.length-1]); long Finish=System.nanoTime() - Start; System.out.println("The Elapsed Time Is: "+Finish/1.0e9); } public static boolean IsPalindrome(long N) { BigInteger Temp=BigInteger.valueOf(N); String Temp2=Temp.toString(); return Temp2.equals(new StringBuilder(Temp2).reverse().toString()); } public static long[] Interval(int M) { long LowerBound=(long) Math.pow(10, M-1); long UpperBound=(long) Math.pow(10, M)-1; long[] interval=new long[1+(int) UpperBound- (int) LowerBound]; Arrays.fill(interval, 0); int IndexCounter=0; for (long Counter=LowerBound;Counter <= UpperBound;Counter++) { interval[indexCounter]=Counter; IndexCounter++; } return interval; } public static long[] ProductInterval(long[] MainInterval) { int IndexCounter=0; long[] Product=new long[(int) Math.pow(MainInterval.length, 2)]; for (int OutterCounter=0;OutterCounter < MainInterval.length;OutterCounter++) { for (int InnerCounter=0;InnerCounter < MainInterval.length;InnerCounter++) { Product[indexCounter]=MainInterval[OutterCounter]*MainInterval[innerCounter]; IndexCounter++; } } return Product; } جواب: run: The Answer Is: 906609 The Elapsed Time Is: 0.31556204 BUILD SUCCESSFUL (total time: 1 second)
- 31 پاسخ
-
- 2
-
-
حل مسئله سوم: The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 function S=Problem3(n) S=max(factor(n)); end
- 31 پاسخ
-
- 1
-
-
حل مسئله دوم: Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms. function S=Problem2(UpperBound) Template=[1,1]; S=nan(1,UpperBound); Counter=1; while Template(end)<UpperBound Temp2=sum(Template); Template=circshift(Template,[0,-1]); Template(end)=Temp2; S(Counter)=Template(1); Counter=Counter+1; end S(isnan(S))=[]; end % T=Problem2(4e6); % T=sum(T(mod(T,2)==0))
- 31 پاسخ
-
- 3
-
-
حل مسئله اول: [Hidden Content] اینو خواسته: Find the sum of all the multiples of 3 or 5 below 1000 function S=Problem1(n) Interval=1:n-1; S=sum(Interval(arrayfun(@(x)mod(x,3)==0 || mod(x,5)==0,Interval))); end
- 31 پاسخ
-
- 4
-
-
-
سلام دوستان.اگه مایل باشید با همکاری هم و برای تقویت کد نویسی هامون تو متلب مسائل سایت پروژه اویلر رو با متلب حل کنیم.البته میدونم که اصلا موضوع جدیدی نیست و تو اکثر فروم های برنامه نویسی هم به زبانهای مختلف یه سری سوالا رو حل کردن ولی بازم به عنوان تمرین میتونه خیلی مفید باشه.فقط خواهشم اینه که اگه کسی خواست واسه یکی از مسائل کدی بزاره سعی کنه دیدش این باشه که از حلقه ها تا جای ممکن استفاده نکنه و به جاش از توابعی که تو متلب به صورت پیش فرض هست استفاده کنه تا حداقل بتونیم به اطلاعاتون راجع به توابع متلب اضافه کنیم. با تشکر
- 31 پاسخ
-
- 3
-
-
فکر میکنم تازه منظورتون رو متوجه شده باشم! منظورتون از احتمال یک سوم اینه که از هر سه تا درایه یکی نات میشه،پس باید دسته بندی هایه سه تایی داشته باشیم. تا این جا که فکر نمیکنم مشکلی باشه. اما حالا برای این که توی این دسته های کوچیکه جدید یه دونه رو انتخاب کنیم کافیه یه randi بگیریم از یک تا تعداد درایه ای ماتریس های جدید. بعد بگیم که درایه ای با این اندیس باید تغییر کنه.راحت میشه کدشو نوشت ولی من الان متلب ندارم که بتونم بیشتر راهنماییتون کنم.
- 12 پاسخ
-
- 2
-
-
منظور من یه چیزی توی این مایه هاست: for i=1:numel(Data) if rand <= 1/3 Data(i)=~Data(i); end end
- 12 پاسخ
-
- 2
-
-
این چیزی که الان گفتید کلا با حرف اولتون فرق داره.شما یه for میذاری از یک تا 15.داخلش یه if میذاری که شرطش اینجوری باشه: اگه رند کوچکتر مساویه احتمال پس شرط درسته و درایه فعلی نات بشه.متاسفانه الان متلب ندارم رو سیستم تا کدش رو بذارم واستون. اما اگه میخوای که فقط سه تا از 15 تا با احتمال یک سوم عوض بشن باید قبلش اون سه تا رو هم با یه رندوم دیگه از 15 تا جدا کنی.مثلا یه رندپرم با ورودی 15 بگیری بعد سه تا درایه اولش رو به عنوان اندیسای منتخب ورداری.
- 12 پاسخ
-
- 3
-
-
منظورتون رو متوجه نشدم،چه جوری کلا همشون نات میشن؟ مثلا اگه رندوم به ما عدد 0.68 رو بده خوب این توی دو سوم باقیمونده از احتمال قرار میگیره پس درایه مورد نظر تغییر نمیکنه ،درسته؟
- 12 پاسخ
-
- 3
-
-
سلام.دوست عزیز شما میتونی بعد از تولید اعداد رندوم یه حلقه for بذاری و با استفاده از rand که یه عدد رندوم بین 0 و 1 میده بگی اگه این عدد از یک سوم مثلا کوچکتر بود درایه فعلی not بشه و اگه نبود همون حالت قبلی بمونه.در مورد اون ماتریس بزرگی هم که گفتی به نظرم اگه بیای هر مثلا 1000 تاش رو بریزی توی یه سطر از یه فایل و بعد از تکمیلش هر وقت به اون ماتریس نیاز داشتی بیای و از اون فایلی که ذخیره کردی بخونی، به نظرم دیگه مشکل حافظه رفع میشه با این روش.
- 12 پاسخ
-
- 3
-
-
ممنون از توجهتون.مشکل من اینه که حتی تو خود هلپ متلب گفته که از اولین سمپل چشم پوشی میکنه.به همین خاطر کلا از استفاده از اون منصرف شدم، اینو نوشتم فمشکلم حل شد: function [MaxValue,MaxIndex]=OptionalMaximum(YData,XData,NumebrOfInterval) hold on stem(XData,YData) grid on Steps=floor(numel(YData)/NumebrOfInterval); PeakValue=cell(1,NumebrOfInterval); PeakIndex=cell(1,NumebrOfInterval); LineCounter=zeros(1,NumebrOfInterval-1); for Counter=1:NumebrOfInterval if Counter==NumebrOfInterval UpperBound=numel(YData); else UpperBound=Counter*Steps; end LowerBound=(Counter-1)*Steps+1; [PeakValue{Counter},PeakIndex{Counter}]=max(YData(LowerBound:UpperBound)); PeakIndex{Counter}=PeakIndex{Counter}+(Counter-1)*Steps; LineCounter(Counter)=UpperBound-1; end MaxValue=cell2mat(PeakValue); MaxIndex=XData(cell2mat(PeakIndex)); plot(MaxIndex,MaxValue,'ko','MarkerSize',10,'MarkerFaceColor','r'); for Counter=1:numel(LineCounter) V1=LineCounter(Counter); V2=LineCounter(Counter)+1; LineCounter(Counter)=mean([V1,V2]); end for Counter=1:numel(LineCounter) plot([LineCounter(Counter) LineCounter(Counter)],[0 max(YData)],'k--'); end
- 2 پاسخ
-
- 2
-
-
سلام.من یه سری دیتا دارم که میخوام هر 5 تا سمپل به 5 تا سمپل ماکزیمم محلی رو بدست بیارم. سایز دیتاهام 41 و قاعدتا باید 8 خروجی به عنوان ماکزیمم داشته باشم. خودم کد زیر رو نوشتم ولی ظاهرا جواب نمیده، ممنون میشم دوستانی که میتونن راهنمایی کنن. clcclear close all YData=load('YData.txt'); XData=load('XData.txt'); hold on stem(XData,YData) grid on N=8; % Tedade daste ha. Steps=floor(numel(YData)/N); % Tedade azaye har daste. PeakValue=cell(1,N); PeakIndex=cell(1,N); for Counter=1:N if Counter==N UpperBound=numel(YData); else UpperBound=Counter*Steps; end LowerBound=(Counter-1)*Steps+1; [PeakValue{Counter},PeakIndex{Counter}]=... findpeaks(YData(LowerBound:UpperBound),XData(LowerBound:UpperBound)); plot(PeakIndex{Counter},PeakValue{Counter},'ro') end دیتا ها رو هم اتچ کردم. [Hidden Content]
- 2 پاسخ
-
- 1
-
-
خب هلن خانوم تو حالت بدون syms این متغیر شما مقدار دهی نمیشه دیگه! شرط رو درست گذاشتین؟
- 87 پاسخ
-
- 2
-
-
الان دیگه ارور مربوط به کد نویسی ندارین و این اخطاری که گرفتین میتونه مثلا ناشی از شرایط خاص دیتاهاتون باشه .راستش من در این مورد نمیتونم نظری بدم.شرمنده
- 87 پاسخ
-
- 2
-
-
داخل بدنه تابعتون تعریفش کردین؟چرا من نمیبینمش؟؟
- 87 پاسخ
-
- 2
-
-
خب ممکنه لاندا* D کوچکتر از صفر دربیاد و اصلا socinitial مقدار دهی نشه
- 87 پاسخ
-
- 2
-
-
نوع متغیرهایی که توی شرط هاتون استفاده کردین چین؟ منظورم اینه که اسکالرن دیگه؟
- 87 پاسخ
-
- 2
-
-
برای استفاده از and باید از & یا در مواردی که خروجی شرطها اسکالر باشن از && استفاده کنین.اگه لطف کنین و اروری رو که در حالت استفاده از & میگیرید بذارید شاید بهتر بتونم کمک کنم.
- 87 پاسخ
-
- 2
-
-
منظورتون از ویرگول چیه دقیقا؟ توی عملگرهای منطقی همچین اپراتوری نداره!
- 87 پاسخ
-
- 2
-
-
این کد نویسیه شما مثله این میمونه که بخواین برای یه دکمه یه کت و شلوار بدوزی! شما خط به خط ارور میگیرین از کدتون.بهتر نیست یکبار با دقت از دوباره کد رو بنویسید؟
-
سلام .از Varargin زمانی استفاده میشه که شما ندونی چندتا متغیر قراره به عنوان ورودی به تابع اعمال بشه.مثل تابع Prod که کار ضرب رو انجام میده و واسش مهم نیست که ضرب چندتا عدد رو ازش بخوای.نکته ای که تو استفاده از Varargin وجود داره اینه که قبل از استفاده ار متغیرهاش تو بدنه تابع باید با استفاده از cell2mat اون رو به ماتریس تبدیل کرد چون varargin متغیرها رو توی نوع داده سلولس ذخیره میکنه! function OutPut=Example(varargin) Temp=varargin; disp(['Class is: ',class(Temp)]); Variables=cell2mat(varargin); OutPut=prod(Variables); end مثال: Example(1:10) Class is: cell ans = 3628800
- 1 پاسخ
-
- 3
-
