کلیدستان

نسخه‌ی کامل: ماتریس2
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام
یه سوال داشتم از خدمتتون! آیا مثل دستور cell که یه آرایه رو میسازه برای ساخت ماتریس دستوری وجود داره که شماره سطر و ستون ها و مقدار درایه ها داده بشه و ماتریس ساخته شه؟ Huh
سلام.
خیلی خوب منظورتون رو متوجه نشدم.
دستور cell ، آرایه های چند بعدی نیز می تواند بسازد (به help متلب برای دستور cell مراجعه کنید)، گفتم شاید ساخت آرایه دو بعدی منظورتان بوده است.

اما اگر مورد قبل ، منظورتون نبوده، شاید این به دردتون بخوره :

برای ماتریس، دستوراتی مثل ones و zeros وجود دارد که هر کدام، تعداد سطر و ستون ماتریس را دریافت کرده و سپس به جای درایه های (عناصر) آن، مقدار 0 (برای دستور zeros) یا مقدار 1 (برای دستور ones) قرار می دهند.

باز هم اگر به پاسخ نرسیده اید، کاملتر توضیح بدید تا راهنماییتون کنم.
از این که نتونستم منظورمو واضح بیان کنم خیلی عذر میخوام.
من با کدهای زیر یه cell ساختم
کد:
close all;
clear all;
clc
A= randi([10,80],1,20);
for i=1:20
     X=A(i);
     F=[];
    for j=1:X/2
         F(j)= mod(X,j);
     end

all_OF=find(F==0);
OF{i}=[all_OF,X];
end
حالا میخوام یه ماتریس بسازم به این شکل که اولین و اخرین عدد درایه اول سلول OF شماره سطر و ستون ماتریسو مشخص کنه و بعد اولین عدد رشته A در اون مکان قرار بگیره. بعد دومین عدد و عدد یکی به اخر مونده دوباره مشخص کننده یک سطر و ستون باشند و باز اولین عدد رشته A اونجا قرار بگیره .این کار جلو بره تا اعداد اولین قسمت در OF تموم بشه و بعد برنامه به همین شکل برای قسمت های بعدی OFتکرار بشه تا آخرین عدد رشته A هم در ماتریس قرار بگیره و بقیه درایه های ماتریس صفر باشه.
دستوری که در متلب، این کار (روندی که شما گفتید) رو انجام بده، وجود نداره (منظورم اینه که حداقل تا حالا من چنین دستوری ندیدم) و این موردی که شما گفته اید، نیاز به کدنویسی خودتان دارد (ساخت ماتریس و بعد قرار دادن مقادیر در آن).
خیلی از راهنماییتون سپاسگزارم
ببخشید یه سوال دیگه داشتم! خیلی ممنون میشم کمکم کنید!
قبل از ساختن ماتریس اگه بخوام کاری کنم که به همون شکلی که توضیح دادم شماره سطر و ستونها هر کدوم به شکل یه بردار نمایش داده بشه چیکار باید بکنم؟
این کد به ذهنم رسید که جواب نمیده.
کد:
for i=1:20
    j=1:numel(OF{i});
    k=numel(OF{i}):1;
    
S(i,j,k)=[OF{i}(j),OF{i}(k)];

end
اگر ممکنه راهنماییم کنید.
با دستور زیر می توانید تمام بردارها را ببینید :

کد:
celldisp(OF)

نتیجه :

کد:
OF{1} =

     1    67



OF{2} =

     1     2    37    74



OF{3} =

     1    19



OF{4} =

     1     2    37    74



OF{5} =

     1     2     3     6     9    18    27    54



OF{6} =

     1     2     4     8    16



OF{7} =

     1    29



OF{8} =

     1     2     3     4     6     8    12    16    24    48



OF{9} =

     1     7    11    77



OF{10} =

     1     2     3     6    13    26    39    78



OF{11} =

     1     3     7    21



OF{12} =

     1     2     3     6    13    26    39    78



OF{13} =

     1     7    11    77



OF{14} =

     1     2     4    11    22    44



OF{15} =

     1     2     3     6    11    22    33    66



OF{16} =

     1     2     4     5    10    20



OF{17} =

     1     3    13    39



OF{18} =

     1     3     5    15    25    75



OF{19} =

     1     2     3     6    11    22    33    66



OF{20} =

     1     2     3     6    13    26    39    78

برای دسترسی به یک مقدار، از یک بردار، مثل کد زیر عمل می کنیم (مقدار سوم از بردار شماره 2) :

کد:
OF{2}(3)

نتیجه :

کد:
ans =

    37

حالا برای دیدن تمامی مقادیر بردار شماره 2 ، این کدها را می نویسیم :

کد:
OF{2}(1:end)

نتیجه :

کد:
ans =

     1     2    37    74