سؤال

لدي هذه المؤامرة

[حل شامل]

alt text

أحتاج إلى جعل مستقيم عمودي خط في نقطة على المحور X يدخل المستخدم و إظهار إحداثيات التقاطع من هذا الخط العمودي مع مؤامرة بلدي.

كيف يمكن القيام بذلك في ماتلاب؟

علي سبيل المثال: يدخل المستخدم 1020 ثم سيتم رسم خط عمودي مستقيم في 1020 يلبي المؤامرة في مرحلة ما، وسيتم عرض إحداثيات تلك النقطة بطريقة أو بأخرى.

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

المحلول

طريقة واحدة للقيام بذلك هي استخدام ginput. وظيفة لتحديد درجة بيانيا باستخدام الماوس. بافتراض مخزنة البيانات التي قمت بتخزينها في متغير data, ، يجب أن تفعل التعليمة البرمجية التالية نوع الشيء الذي تريده.

set(gca,'XLimMode','manual','YLimMode','manual');  % Fix axes limits
hold on;
[x,y] = ginput(1);  % Select a point with the mouse
x = round(x);       % Round x to nearest integer value
y = data(x);        % Get y data of intersection
plot([x x],get(gca,'YLim'),'k--');  % Plot dashed line
plot(x,y,'r*');     % Mark intersection with red asterisk
disp('Intersection coordinates:');
disp([x y]);        % Display the intersection point

يفترض أعلاه أن قيم X للقيم الرسم البيانية هي مجرد مؤشرات في صفيف البيانات التي تخطط، والتي يبدو أنها هي الحالة من الرسم البياني الذي تظهر عليه أعلاه.

نصائح أخرى

جرب شيئا مثل:

x = 1020;

% plot a vertical line
ylimits = get(gca, 'YLim');
hold on;
plot([x x], ylimits, 'k');

% mark the intersection with the plot
plot(x, data(x), 'ro');
annot = sprintf('Intersection: x=%f, y=%f', x, data(x));
text(x, data(x), annot);

لا يتم اختبار التعليمات البرمجية وفترض أن الرقم الخاص بك هو الوحدة الحالية، يتم تخزين البيانات المتأخرة في صفيف "البيانات" وأنه تم إجراء المؤامرة الأصلية دون تحديد ناقلات X إضافي.

يمكنك أيضا استخدام الوظائف hline و vline, والتي يمكن تنزيلها من: http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-vline.

يفعلون نفس الشيء بالنسبة لك.

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