سوال في المصفوفات

انا عملتها بدون -1 عشان في اخر صف يكون لدي 00000

هذا بسبب ان المصفوفة M نفسها تحتوى على مجموعة من الصفوف الصفرية فى الأخر وليس بسبب الادخال

لكن المشكلة انه عندما طبقت البرنامج كانت المصفوفة الجديدة X ليست المصفوفة M مع اضافة صفوف صفرية ولم اعرف ماهو السبب

جربى البرنامج اللى ارسلته فى ردى السابق هل يعمل كما يجب أم لا ؟؟

انا جربت نفس الكود اللي كتبته

لكن عندما طابقت المصفوفة الجديدة التي اضفت اليها المصفوفة الصفرية بالمصفوفة السابقة لم اجد اي تطابق

لكن عندما طابقت المصفوفة الجديدة التي اضفت اليها المصفوفة الصفرية بالمصفوفة السابقة لم اجد اي تطابق

ياريت توضحى أكتر اى مصفوفة سابقة واى تطابق ؟

اولا شكرا لك اخي الكريم
ثانيا من الكود التالي الا يفترض ان تكون عناصر المصفوفة X مكونه من المصفوفه الصفرية ومن المصفوفةM
لكن عندما طبقت كانت النتيجة ان مصفوفة Xتحمل قيم جديده ليست مساويه لقيم المصفوفة M

فمثلا اذا كانت المصفوفة
M=
1011
1100
1101
1111
وهكذا
فهذا يعني ان المصفوفة Xستكون كالتالي:
1011
0000
1100
0000
1101
0000
1111
وهذا هو الكود(

clear
A=imread('ward.jpg');
B=imresize(A,[400 400]);
C=rgb2gray(B);
D=dec2bin(C);
S=dec2bin(0);
M = D(:,1:4);
L = D(:,5:end);
[N W] = size(M);
j = 1;
X(1,:)= M(1,:);
for i = 2: N + N - 1
    if (rem(i,2) == 1)
        X(i,:)= M(i-j,:);
        j = j + 1;    
    else
        X(i,:) = S;
    end
end
X

[/quote]
)

اتمنى اني استطعت ان اشرح لك الفكرة
وجزيت الجنة

أنا طبقت البرنامج اللى أرسلتيه

والنتيجة كالاتى لاول 100 صف من المصفوفة M

M =

0101
0101
0101
0101
0101
0101
0101
0101
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0011
0011
0100
0100
0011
0011
0100
0100
0100
0100
0100
0100
0101
0101
0101
0101
0101
0101
0101
0101
0101
0100
0100
0011
0010
0010
0010
0001
0001
0001
0001
0001
0001
0001
0001
0001
0010
0010
0010
0001
0001
0010
0010
0001
0001
0010
0010
0010
0010
0010
0010
0010
0001
0001
0001
0001
0001
0001
0010
0010
0010
0010
0011
0011
0011
0010
0010
X =

0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0011
0000
0011
0000
0100
0000
0100
0000
0011
0000
0011
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0100
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0101
0000
0100
0000
0100
0000
0011
0000
0010
0000
0010
0000
0010
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0010
0000
0010
0000
0010
0000
0001
0000
0001
0000
0010
0000
0010
0000
0001
0000
0001
0000
0010
0000
0010
0000
0010
0000
0010
0000
0010
0000
0010
0000
0010
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0010
0000
0010
0000
0010
0000
0010
0000
0011
0000
0011
0000
0011
0000
0010
0000
0010

اخي الفاضل عندما طبقت نفس البرنامج كانت النتيجة كالتالي ولست ادري ماهو السبب في الاختلاف حيث انني طبقت نفس الكود على 3 اجهزة وكانت هذه النتيجة

M=

0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001
0001

X=

0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0001
0000
0000
0000
0000
0000
0000
0000
0000
0000

وجزاك الله خيرا على الاهتمام

وهذا الناتج من تطبيق الكود على جهاز اخر
لكن باستخدام صورة مختلفة
M=

1101
0111
0100
0101
0101
0111
0110
0111
0110
0101
0110
0101
0100
0100
0100
0100
0100
0100
0101
0011
0010

X=

0000
0110
0000
0110
0000
0101
0000
0110
0000
0101
0000
0101
0000
0111
0000
0111
0000
0111
0000
0111

واعذرني على كثر الاسئلة

أرى فى الحالة الثانية عند تطبيق الكود على جهاز أخر أعطت النتيجة الصحيحية
لذلك هناك خطأ فى الجهاز لديك ولكن لا اعلم ما هو الخطا
يمكنك محاولة تنفيذ الكود مرات عديدة حتى تحصلين على النتيجة المطلوبة

اخي الفاضل حتى في المرة الثانية لم يتطبق معي لان المصفوفة متغيرة ولم تكن نفس النتيجة

واعذرني عندي استفسار هل يوجد طريقة اخرى استطيع ان اطبق الفكرة بكود اخر.(يعني ان اقوم بدمج المصفوفة M مع L
بحيث تكون الصفوف الزوجية ماخوذة من المصفوفة M والفردية من المصفوفة L)

وجزاك الله خيرا

انا أرى فى هذا الرد http://www.almohandes.org/vb/showpost-p_217571-postcount_27.html
ان النتيجة تظهر كما يجب وايا كان فالكود يعمل معى جيدا اعتقد ان المشكلة فى شيئا ما لديك فى البرنامج او الكمبيوتر
حقيقا لا ادرى [B].

وبالنسبة للفقرة الثانية فان الكود الاتى ياخد الصفوف الزوجية من M والفردية من L

[/b]

clear
A = imread('ward.jpg');
B = imresize(A,[400 400]);
C = rgb2gray(B);
D = dec2bin(C);
S = dec2bin(0);

M = D(:,1:4); 
L = D(:,5:end);

[NM WM] = size(M);
[NL WL] = size(L);

N = NM + NL;
J = 1;
K = 1;

% One only
X(1,:) = L(1,:);

for i = 2:N  
    if (rem(i,2) == 1) % Odd
        X(i,:) = L(i-J,:);
        J = J + 1;
    end
    if (rem(i,2) == 0) % Even
        X(i,:) = M(i-K,:);
        K = K + 1;
    end
end

جزاك الله كل الخير اخي الفاضل
الى الان لست ادري ماهو الخلل لكن عندما استطيع حل المشكلة باذن الله ساكتب الكود هنا لكي تعم الفائدة لاخواني واخواتي من بعدي

اشكر هذا المنتدى الرائع وجزاكم الله كل الخير

جزاك الله خيرا وبالتوفيق ان شاء الله