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



اضافه و یا کم کردن ستون های یک ماتریس با شرایط خاصزمان کنونی: ۱۳۹۵/۰۹/۱۳، ۰۲:۵۸ ق.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: mo.hadi
آخرین ارسال: 4i469x
پاسخ 2
بازدید 1104

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اضافه و یا کم کردن ستون های یک ماتریس با شرایط خاص

اضافه و یا کم کردن ستون های یک ماتریس با شرایط خاص

#1
با سلام
س1: ماتریسی داریم n*m و می خواهیم تعدادی ستون به آن اضافه کنیم. حتما باید در نظر داشته باشیم که مجازیم ستون هایی را اضافه کنیم که همه درآیه های آنها فقط یک باشد.
س2: در حالتی دیگر با فرض فوق می خواهیم چنین ستونهایی را حذف کنیم.


**برای روشن تر شدن یک مثال می زنم::
مثلا ماتریس 20 در 30 (20 سطر و 30 ستون) که می خواهیم 5 ستون از آنرا حذف کنیم تا 20 در 25 بشود بنحوی که ستون های حذف شده یا همه شان یک یا 95% شان یک باشد.
و برای س2 مثال فوق و اینکه می خواهیم 5 ستون با همان شرایط خاص اضافه کنیم تا 20 در35 شود.
پاسخ

اضافه و یا کم کردن ستون های یک ماتریس با شرایط خاص

#2
کد:
clc;close all;
m=input('please input matrix :');
[m1 m2]=size(m);
s=input('If you want add columns , choose A and if you want remove columns , choose R : ');
if s=='A'
A=input('please input your number of columns that you want to add them :');
m=horzcat(m,ones(m1,A));
else
R=input('please input your column numbers that you want to remove them :');
o=ones(m1,1);
w=m;
for i=1:length(R)
if m(:,R(i))==o
w(:,R(i))=[];
else if (nnz(m(:,R(i))-o))*100/m1<=5/100
w(:,R(i))=[];
end
end
end
m=w;
end
m

مثال : ماتریس زیر را به عنوان ورودی میدهیم :

کد:
q =
1 2 1 1 1
2 3 1 1 1
3 4 1 1 1
4 5 1 1 1
5 6 1 1 2
6 4 1 1 2
7 3 1 5 2
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

خروجی کد نوشته شده برای حالت اضافه شده 5 ستون به این شکل است:

کد:
m =
1 2 1 1 1 1 1 1 1 1
2 3 1 1 1 1 1 1 1 1
3 4 1 1 1 1 1 1 1 1
4 5 1 1 1 1 1 1 1 1
5 6 1 1 2 1 1 1 1 1
6 4 1 1 2 1 1 1 1 1
7 3 1 5 2 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1

برای حالت حذف ستون ، برای برنامه تعیین میکنیم که ستونهای [1,2,3,4,5] را حذف کند که خروجی به صورت زیر است:

کد:
m =
1 2 1 1
2 3 1 1
3 4 1 1
4 5 1 1
5 6 1 2
6 4 1 2
7 3 5 2
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
دوست دارم زندگی رو . . . 
پاسخ


پرش به انجمن:


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

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)