رفتن به مطلب

ehsan_faal

کاربر انجمن
  • تعداد ارسال ها

    112
  • تاریخ عضویت

  • آخرین بازدید

تمامی مطالب نوشته شده توسط ehsan_faal

  1. ehsan_faal

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

    متاسفانه سوالتون خیلی گنگه! دنبال الگوریتمی هستین که داریه های یک ماتریس رو به توان یه عدد برسونه و نهایتا درایه ها با هم برابر بشن؟ اصلا این کار شدنیه؟
  2. ehsan_faal

    findpeaks

    این 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. سلام .از منوی Preferences گزینه Color رو بزنید ، بعد از قسمت سمت راست Variable and Function Colors میتونید رنگهای مورد علاقتون رو set کنید.
  4. حل سوال پنجم: 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
  5. حل مسئله چهارم: 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)
  6. حل مسئله سوم: 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
  7. حل مسئله دوم: 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))
  8. حل مسئله اول: [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
  9. ehsan_faal

    حل سوالات سایت پروژه اویلر با متلب

    سلام دوستان.اگه مایل باشید با همکاری هم و برای تقویت کد نویسی هامون تو متلب مسائل سایت پروژه اویلر رو با متلب حل کنیم.البته میدونم که اصلا موضوع جدیدی نیست و تو اکثر فروم های برنامه نویسی هم به زبانهای مختلف یه سری سوالا رو حل کردن ولی بازم به عنوان تمرین میتونه خیلی مفید باشه.فقط خواهشم اینه که اگه کسی خواست واسه یکی از مسائل کدی بزاره سعی کنه دیدش این باشه که از حلقه ها تا جای ممکن استفاده نکنه و به جاش از توابعی که تو متلب به صورت پیش فرض هست استفاده کنه تا حداقل بتونیم به اطلاعاتون راجع به توابع متلب اضافه کنیم. با تشکر
  10. ehsan_faal

    تولید اعداد تصادفی

    فکر میکنم تازه منظورتون رو متوجه شده باشم! منظورتون از احتمال یک سوم اینه که از هر سه تا درایه یکی نات میشه،پس باید دسته بندی هایه سه تایی داشته باشیم. تا این جا که فکر نمیکنم مشکلی باشه. اما حالا برای این که توی این دسته های کوچیکه جدید یه دونه رو انتخاب کنیم کافیه یه randi بگیریم از یک تا تعداد درایه ای ماتریس های جدید. بعد بگیم که درایه ای با این اندیس باید تغییر کنه.راحت میشه کدشو نوشت ولی من الان متلب ندارم که بتونم بیشتر راهنماییتون کنم.
  11. ehsan_faal

    تولید اعداد تصادفی

    منظور من یه چیزی توی این مایه هاست: for i=1:numel(Data) if rand <= 1/3 Data(i)=~Data(i); end end
  12. ehsan_faal

    تولید اعداد تصادفی

    این چیزی که الان گفتید کلا با حرف اولتون فرق داره.شما یه for میذاری از یک تا 15.داخلش یه if میذاری که شرطش اینجوری باشه: اگه رند کوچکتر مساویه احتمال پس شرط درسته و درایه فعلی نات بشه.متاسفانه الان متلب ندارم رو سیستم تا کدش رو بذارم واستون. اما اگه میخوای که فقط سه تا از 15 تا با احتمال یک سوم عوض بشن باید قبلش اون سه تا رو هم با یه رندوم دیگه از 15 تا جدا کنی.مثلا یه رندپرم با ورودی 15 بگیری بعد سه تا درایه اولش رو به عنوان اندیسای منتخب ورداری.
  13. ehsan_faal

    تولید اعداد تصادفی

    منظورتون رو متوجه نشدم،چه جوری کلا همشون نات میشن؟ مثلا اگه رندوم به ما عدد 0.68 رو بده خوب این توی دو سوم باقیمونده از احتمال قرار میگیره پس درایه مورد نظر تغییر نمیکنه ،درسته؟
  14. ehsan_faal

    تولید اعداد تصادفی

    سلام.دوست عزیز شما میتونی بعد از تولید اعداد رندوم یه حلقه for بذاری و با استفاده از rand که یه عدد رندوم بین 0 و 1 میده بگی اگه این عدد از یک سوم مثلا کوچکتر بود درایه فعلی not بشه و اگه نبود همون حالت قبلی بمونه.در مورد اون ماتریس بزرگی هم که گفتی به نظرم اگه بیای هر مثلا 1000 تاش رو بریزی توی یه سطر از یه فایل و بعد از تکمیلش هر وقت به اون ماتریس نیاز داشتی بیای و از اون فایلی که ذخیره کردی بخونی، به نظرم دیگه مشکل حافظه رفع میشه با این روش.
  15. ممنون از توجهتون.مشکل من اینه که حتی تو خود هلپ متلب گفته که از اولین سمپل چشم پوشی میکنه.به همین خاطر کلا از استفاده از اون منصرف شدم، اینو نوشتم فمشکلم حل شد: 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
  16. ehsan_faal

    یافتن ماکزیمم محلی در بازه های دلخواه

    سلام.من یه سری دیتا دارم که میخوام هر 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]
  17. ehsan_faal

    استفاده از Function Handle در متلب

    خب هلن خانوم تو حالت بدون syms این متغیر شما مقدار دهی نمیشه دیگه! شرط رو درست گذاشتین؟
  18. ehsan_faal

    استفاده از Function Handle در متلب

    الان دیگه ارور مربوط به کد نویسی ندارین و این اخطاری که گرفتین میتونه مثلا ناشی از شرایط خاص دیتاهاتون باشه .راستش من در این مورد نمیتونم نظری بدم.شرمنده
  19. ehsan_faal

    استفاده از Function Handle در متلب

    داخل بدنه تابعتون تعریفش کردین؟چرا من نمیبینمش؟؟
  20. ehsan_faal

    استفاده از Function Handle در متلب

    خب ممکنه لاندا* D کوچکتر از صفر دربیاد و اصلا socinitial مقدار دهی نشه
  21. ehsan_faal

    استفاده از Function Handle در متلب

    نوع متغیرهایی که توی شرط هاتون استفاده کردین چین؟ منظورم اینه که اسکالرن دیگه؟
  22. ehsan_faal

    استفاده از Function Handle در متلب

    برای استفاده از and باید از & یا در مواردی که خروجی شرطها اسکالر باشن از && استفاده کنین.اگه لطف کنین و اروری رو که در حالت استفاده از & میگیرید بذارید شاید بهتر بتونم کمک کنم.
  23. ehsan_faal

    استفاده از Function Handle در متلب

    منظورتون از ویرگول چیه دقیقا؟ توی عملگرهای منطقی همچین اپراتوری نداره!
  24. ehsan_faal

    استفاده از Function Handle در متلب

    این کد نویسیه شما مثله این میمونه که بخواین برای یه دکمه یه کت و شلوار بدوزی! شما خط به خط ارور میگیرین از کدتون.بهتر نیست یکبار با دقت از دوباره کد رو بنویسید؟
  25. ehsan_faal

    varargin

    سلام .از 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
×
×
  • اضافه کردن...