حساب الحد الأقصى للمسافة بين عناصر المتجه في Matlab

StackOverflow https://stackoverflow.com/questions/2452705

سؤال

لنفترض أن لدينا ناقل مثل

x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));

أود حساب أقصى مسافة بين عناصر x في بعض الطرق الاصطلاحية. سيكون من السهل التكرار فقط على جميع المجموعات الممكنة xعناصر ، لكنني أشعر أنه يمكن أن تكون هناك طريقة للقيام بذلك مع وظائف Matlab المدمجة بطريقة مجنونة ولكنها طبيعية.

هل كانت مفيدة؟

المحلول

ماذا عن

max_dist = max(x) - min(x)

?

نصائح أخرى

هل تقصد الفرق بين أكبر وأصغر العناصر في المتجه الخاص بك؟ إذا قمت بذلك ، فإن شيئًا كهذا سيعمل:

max(x) - min(x)

إذا لم تقم بذلك ، فأنا أساء فهم السؤال.

هذا حساب مسافة بين النقطة ، على الرغم من أنه بسيط ، لأنك تعمل في بُعد واحد. هذه النقطة التي تقع على مسافة أقصى في بعد واحد هي دائمًا واحدة من نقطتين محتملين. لذلك كل ما تحتاجه هو الحصول على الحد الأدنى من القيمة والحد الأقصى من القيمة من القائمة ، وانظر إلى أبعد من النقطة المعنية. لذا بافتراض أن الأرقام في X هي أرقام حقيقية ، فإن هذا سيعمل:

xmin = min(x);
xmax = max(x);
maxdistance = max(x - xmin,xmax - x);

كبديل ، منذ بعض الوقت وضعت أداة حساب مسافة بين نقاط عامة على تبادل الملفات (IPDM). إنه ذكي بما يكفي لمشاكل بسيطة في حالة بسيطة مثل مشكلة النقطة 1-D. هذه المكالمة ستفعل ذلك من أجلك:

D = ipdm(x,'subset','farthest','result','struct');

بالطبع ، لن يكون فعالًا مثل الرمز البسيط الذي كتبته أعلاه ، لأنه أداة عامة بالكامل.

أه ... أحب أن يكون لديك ماتلاب على يدي وما زال في الصباح الباكر ، ولكن ماذا عن شيء مثل:

max_dist = max(x(2:end) - x(1:end-1));

لا أعرف ما إذا كان هذا هو ما تبحث عنه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top