انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
جابه جایی سطرهای ماتریس در متلب

جابه جایی سطرهای ماتریس در متلب

#1
سلام
میخواستم با متلب این کارو انجام بدم:
یک ماتریس n*n  را بدم بهش سطرهای ان ماتریس رو طوری تغییر بده که مجموع اعداد روی قطر اصلی ماکسیمم بشه
فقط بگم که ماتریس مورد نظر بزرگه سطر ها و ستون هاش از 60*60 بیشتره
چون روی یک برنامه دیگه در حال کار کردنم واقعا وقت ندارم که این را انجام بدم یکمی روش فکر کردم ولی موفق نشدم
اگه واقعا کسی میتونه کمک کنه , کمک کنه برای انجام پرژه ام این برنامه رو باید با متلب بنویسم
پاسخ

جابه جایی سطرهای ماتریس در متلب

#2
کسی نیست کمک کنه
لازم دارم این برنامه رو باید تا اخر هفته تحویلش بدم
از اساتید خواهش دارم کمک کنن
لطفا!!!!!!


 
پاسخ

جابه جایی سطرهای ماتریس در متلب

#3
من خودم اینجوری دارم حلش میکنم
الگوریتمی که میخوام برم به این صورت هست
اول باید بعد از وارد شدن ماتریس مورد نظر با یک دستوری که می نویسیم داخل برنامه بیاد بزرگترین درایه در هر سطر را پیدا کنه دستورش اینجوریه اگه اشتباه نکن
کد پی‌اچ‌پی:
max(a,DIM
با استفاده از دستور زیر هم باید ستون ها رو مرتب کنیم
کد پی‌اچ‌پی:
sort 
با این هم باید جمع اعداد قطر اصلی رو جمع کنیم
کد پی‌اچ‌پی:
Diag(a
با این دستور هم میتونیم ماتریس را بصورت بالا پایین بچرخانیم
کد پی‌اچ‌پی:
flipud(a

کسی هم که نیست کمک کنه چطوری میشه اینکارو کرد چندبار کد زدم نشد.
نمیشه سخته
 

 
پاسخ

جابه جایی سطرهای ماتریس در متلب

#4
سلام
من خودم متلبم خراب شده نمیتونم بنویسم و چک کنم.
به نظرم بعد از اینکه ماتریس رو در یافت کردید  یه ماتریس دیگه به همون ابعاد تعریف کنیذ .ماکزیمم درایه هر سطر را پیدا کنید و با توجه به اینکه در کدوم ستون از این سطر ماکزیمم درایه قرار داره اون سطر را در سطر مناسب از ماتریس جدید بنویسید.(یعنی جایی که اون درایه بشه درایه قطر اصل اون سطر)
این کار را با یک حلقه for میشه انجام ذاد!
البته ممکنه حالتی پیش بیاد که دوسطر ماکزیمم شون در یک ستون رخ بده که در اون صورت باید بینشون اونی که بیشتره رو انتخاب کنید.
همچنین باید شماره سطرهایی  که پر میشه را ذخیره کنید که دوباره روی اونا ننویسید.!
شاید خیلی راحت ترم بشه این کا رو کرد اما من الان چیز دیگه ای به ذهنم نمیرسه!
امیدوارم کمکتون کرده باشم!!!

 

 
پاسخ

جابه جایی سطرهای ماتریس در متلب

#5
سلام
با راهنمایی شما این برنامه را نوشتم که در هر سطر میاد بزرگترین عدد را پیدا میکنه
کد پی‌اچ‌پی:
function [ ] = max)
%
UNTITLED Summary of this function goes here
%   Detailed explanation goes here
B
=[1 2 3 4 5 6]
ANSWER max (B);
disp('large num');
disp(ANSWER);

end 
جواب به این صورت نمایش داده میشه
کد پی‌اچ‌پی:
>> max

=

     
1     2     3     4     5     6

large num
     6 

این قسمت را که چطوری در کدوم ستون از این سطر ماکزیمم درایه قرار داره اون سطر را در سطر مناسب از ماتریس جدید بنویسد.(یعنی جایی که اون درایه بشه درایه قطر اصل اون سطر) را متوجه نشدم چطوری بنویسم؟؟
کسی که متلب رو سیستمش نصب باشه بلد نیست این قسمت رو بنویسه؟
 
در ضمن فکر کنم این برای جمع اعداد روی قطر اصلی بکار میره ولی نمیدونم مشکلش کجاست که ارور میده
کد پی‌اچ‌پی:
some constant less than m or n
[m,n] = size(C);
zeros(m-r,n-r);
for 
i=1:m-r+1
    
for j=1:n-r+1
        S
(i,j) = sum(diag(C(i:i+r-1,j:j+r-1)));
    
end
end 
منتظر پاسخ دوستان


 

 
پاسخ

جابه جایی سطرهای ماتریس در متلب

#6
میگم شاید چیزی که گفتم جواب نده!!!
برای پیدا کردن ماکزیمم سطر i ام:
کد پی‌اچ‌پی:
max(max(a(i,:))) 
برای حاصل جمع قطر اصلی:
کد پی‌اچ‌پی:
sum(diag(a)) 
ماکزیمم سطر i را که پیدا کردید از find استفاده کنید تا ادرس اون رو بفهمید بعد سطر مورد نظر را در سطر با  شماره ستون ادرس ماکزیمم کپی کنید

 
پاسخ

جابه جایی سطرهای ماتریس در متلب

#7
ببینید اینجوری درسته؟
کد پی‌اچ‌پی:
[row,column]=find(A==max(B)) 
 
پاسخ

جابه جایی سطرهای ماتریس در متلب

#8
 اقای مدیرازتون خواهش دارم که شما هم بعنوان استاد بنده نظری راجب این سوالم بدید من خودم یکسری کدزدم اگه دیده باشید ولی بصورت تیکه تیکه برای هر قسمت را نوشتم اگر مقدوره براتون چند دقیقه ای وقتتون را برای این سوال بنده بگزارید. بلکه شما توانستید مشکلم را حل کنید.
با تشکر فراوان
پاسخ

جابه جایی سطرهای ماتریس در متلب

#9
سلام.
به نظر بنده، این روش که ماکزیمم مقدار هر ردیف را پیدا کرده و سپس بر اساس آنها، ردیف ها را جابجا کنیم، اشتباه است. زیرا هیچ تضمینی نیست که حتما ماکزیمم مقدار برای جمع عنصرهای قطر به وجود بیاید.
براتون مثال می زنم :

کد پی‌اچ‌پی:
clear all
close all
clc

A
=[1 2 30 0 1110 11 12]
your_method=[A(2,:); A(1,:); A(3,:)]
best=[A(3,:); A(1,:); A(2,:)] 

نتیجه اجرای کد متلب بالا :

کد پی‌اچ‌پی:
=

     
1     2     3
     0     0    11
    10    11    12


your_method 
=

     
0     0    11
     1     2     3
    10    11    12


best 
=

    
10    11    12
     1     2     3
     0     0    11 

ماتریس your_method بر اساس روش پیشنهادی شما تعیین شده و در واقع، عدد 12 ما را فریب داده و ردیف مربوط به آن را طوری قرار داده ایم که عدد 12 در قطر قرار بگیرد، در صورتیکه یک حالت بهتر را در ماتریس best نمایش داده ایم. بنابراین مشاهده می کنید که این روش، منطق ریاضی ندارد.
توصیه بنده این است یا با کدنویسی (حلقه های for) کلیه حالت ها برای چیدمان ردیف ها را ساخته و ببینید کدامیک ماکزیمم می شود یا با یک دانشجوی رشته ریاضی مشورت کنید و ببینید یک روش ریاضی برای این نوع مسائل سراغ دارد یا خیر (که مجبور نشوید تمام حالت ها را بسازید).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط s.saeid

جابه جایی سطرهای ماتریس در متلب

#10
بینهایت سپاس  گزارم از این که وقت ارزشمند تون را قرار دادین تا راهنماییم کنید
بله به این فکر نکرده بودم حق با شما هستش ممکنه اصلا هیچ  ماکزیمم مقدار برای جمع عنصرهای قطر به وجود نیاد
چشم بنده این موضوع را پیگیری میکنم در موقعیت مناسب بهتون اطلاع میدم
 
پاسخ
 سپاس شده توسط admin

جابه جایی سطرهای ماتریس در متلب

#11
جناب مدیر من سوال کردم گفتن که باید برای هر سطر این فرمول را بریم     بعدش باید توی هرسطر بزرگترین را پیدا کنه و با توجه به اینکه در کدوم ستون از این سطر ماکزیمم درایه قرار داره اون سطر را در سطر مناسب قرار بده
یعنی باید با یک دستوری داخل حلقه for این کار را انجام بدیم:
ابتدا بیاد سطر ها رو بررسی کنه مثلا در سطر اول درایه سوم بزرگترین بود باید ان را به سطر سوم ببره و سطر دوم درایه اول بزرگترین بود ببره سطر اول....
دقیقا میشه همون حالت best که مثال زدین
 

 

 

 

 

 
پاسخ

جابه جایی سطرهای ماتریس در متلب

#12
دوستان و مدیران نظری در این زمینه ندارید؟
ایا این کار را هم میشه کرد>
ماکسییم هر سطر را بگیرید و در قطر اصلی ماتریس جدید بگذارد.

 
فهمیدن بهتر از دانستن است.
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان