رفتن به مطلب

شکستن یک بردار به چند بردار


setarehbaran

ارسال های توصیه شده

سلام. وقتتان بخیر.

من یه بردار دارم که بعضی از اعدادش متوالی و بعضی هاش غیر متوالی هستن. میخوام اعداد متوالی را هرکدام به یک بردار جدا تبدیل کنم. از طرفی میخوام این بردار کلی رو خود متلب بخونه و تشخیص بده که این بردار باید به چندتا بردار جداگانه شکسته بشه ، بعد انها را در بردارهای جداگانه قرار بدهد. نمیدونم چجوری باید این کار رو انجام بدم. ممنون میشم کمک کنید.

لینک به دیدگاه
سلام. وقتتان بخیر.

من یه بردار دارم که بعضی از اعدادش متوالی و بعضی هاش غیر متوالی هستن. میخوام اعداد متوالی را هرکدام به یک بردار جدا تبدیل کنم. از طرفی میخوام این بردار کلی رو خود متلب بخونه و تشخیص بده که این بردار باید به چندتا بردار جداگانه شکسته بشه ، بعد انها را در بردارهای جداگانه قرار بدهد. نمیدونم چجوری باید این کار رو انجام بدم. ممنون میشم کمک کنید.

 

سلام

برداتون رو میذارین، یا مثلا یه قسمتش رو؟

لینک به دیدگاه

سلام. مرسی. درستش کردم. اینم حوابش:

 

[font=Courier New][size=2][font=Courier New][size=2]clear [/size][/font][/size][/font][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]all[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2]close [/size][/font][/size][/font][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]all[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2]pos_4mark=[2 3 5 7 8 9 10 12 15]



len_4=length(pos_4mark);

dist_vec=[];

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2] i=1:len_4-1[/size][/font][/size][/font]
[font=Courier New][size=2][font=Courier New][size=2]
dist_vec=[dist_vec pos_4mark(i+1)-pos_4mark(i)];

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]end

[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2] i=1:length(dist_vec)[/size][/font][/size][/font]
[font=Courier New][size=2][font=Courier New][size=2]
   gaps_4=find(dist_vec~=1);

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]end

[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2]num_sub_grp=length(gaps_4);

groups_4=cell(num_sub_grp+1,1);



groups_4{1}=pos_4mark(1):pos_4mark(gaps_4(1));

groups_4{num_sub_grp+1}=pos_4mark(gaps_4(num_sub_grp)+1):pos_4mark(len_4);



[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2] i=1:num_sub_grp-1[/size][/font][/size][/font]
[font=Courier New][size=2][font=Courier New][size=2]
   groups_4{i+1}=pos_4mark(gaps_4(i)+1):pos_4mark(gaps_4(i+1));

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]end
[/color][/size][/font][/color][/size][/font][/color][/size][/font]
لینک به دیدگاه
سلام. مرسی. درستش کردم. اینم حوابش:

 

[font=Courier New][size=2][font=Courier New][size=2]clear [/size][/font][/size][/font][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]all[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2]close [/size][/font][/size][/font][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]all[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0][font=Courier New][size=2][color=#a020f0]
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2]pos_4mark=[2 3 5 7 8 9 10 12 15]



len_4=length(pos_4mark);

dist_vec=[];

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2] i=1:len_4-1[/size][/font][/size][/font]
[font=Courier New][size=2][font=Courier New][size=2]
dist_vec=[dist_vec pos_4mark(i+1)-pos_4mark(i)];

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]end

[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2] i=1:length(dist_vec)[/size][/font][/size][/font]
[font=Courier New][size=2][font=Courier New][size=2]
   gaps_4=find(dist_vec~=1);

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]end

[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2]num_sub_grp=length(gaps_4);

groups_4=cell(num_sub_grp+1,1);



groups_4{1}=pos_4mark(1):pos_4mark(gaps_4(1));

groups_4{num_sub_grp+1}=pos_4mark(gaps_4(num_sub_grp)+1):pos_4mark(len_4);



[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=2][font=Courier New][size=2] i=1:num_sub_grp-1[/size][/font][/size][/font]
[font=Courier New][size=2][font=Courier New][size=2]
   groups_4{i+1}=pos_4mark(gaps_4(i)+1):pos_4mark(gaps_4(i+1));

[/size][/font][/size][/font][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff][font=Courier New][size=2][color=#0000ff]end

[/color][/size][/font][/color][/size][/font][/color][/size][/font]

 

از اینم می تونین استفاده کنین، کوتاه تره:

 

clear;
pos_4mark = [2 3 5 7 8 9 10 12 15];
pos_4mark_diff = diff(pos_4mark);
idx = find(pos_4mark_diff~=1);
group = mat2cell(pos_4mark,1,[idx(1) diff(idx) length(pos_4mark)-idx(end)])

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...