كيفية قراءة خطوط متعددة من قبل الفرد في نص تحرير مع قيمة ماكس = 5 في ماتلاب?
-
13-12-2019 - |
سؤال
لدي في واجهة المستخدم الرسومية حقل نص تحرير يقبل أسطر متعددة بقيمة قصوى تبلغ 5 ، ولا يمكنني العثور على طريقة لعرض مصفوفة بقيم الإدخال...شيء من هذا القبيل:
m=[m(1) m(2) m(3) m(4) m(5)];
set(handles.show,'string',m)
كيف يمكنني تخزين القيم في رد الاتصال حساب..في كل مرة أقوم بتشغيل هذا ، فإنه يجلب لي خطأ..
function masa_Callback(hObject, eventdata, handles)
% hObject handle to masa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%h_edit is the handle to the edit box
m=str2double(get(hObject,'String'));
function calculate_Callback(hObject, eventdata, handles)
% hObject handle to agregarm (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
f = str2double(get(h_fuerza,'string')); %h_edit is the handle to the edit box
m = str2double(get(h_masa,'string')); %h_edit is the handle to the edit box
[row, column] = size(m);
for i = 1:row
eval(m{i,:}) %evaluate each line as in MATLAB command prompt
end
لدي ماسا_كالباك ، ريجيدز_كالباك و فويرزا_كالباك أحاول قراءة إدخال المستخدم في تحرير النص box...so أريد تمرير هذه القيم إلى كالكولاتي_كالباك كمصفوفة لأداء عمليات معينة وفقا لقيمة ن...الخطأ الذي أحصل عليه هو أنه عندما على سبيل المثال ن=2 ، أقوم بإضافة قيمتين في عمود ماسا_كالباك و فويرزا_كالباك و 3 قيم في ريجيدز_كالباك ، يتم تمرير هذه القيم إلى الحالة ن==2 ، وعندما يحاول برنامجي عرض المصفوفة على سبيل المثال م ، فإنه يعرض جميع القيم التي أدخلها معا في مسافات م(1) و م(2)...أريد أن أضع فقط كل قيمة منفصلة ، وليس انضم معا!...كيف يمكنني إصلاح هذا ، وأعتقد أن هذا هو مثال صفيف وحلقة ولكن أنا لا أعرف كيف ، وكيفية تمرير قيم الصفيف إلى المعادلة لأداء العمليات (كأرقام) وعرضها كسلسلة
المحلول
لإصلاح المشكلة مع الإدخال (على افتراض أن لديك البيانات الخاصة بك في بعض صفيف الخلية ، وهذا handles.show
يشير إلى مربع نص) ، استخدم strvcat
:
someCellArray = {'a','b'};
m = strvcat(someCellArray{:});
set(handles.show,'string',m)
مشكلتك تنبع من الخط
m = str2double(get(h_masa,'string'));
لا تريد تحويل السلسلة إلى مضاعفة.
منذ String
تقوم الخاصية في الواقع بإرجاع سلسلة متعددة الأسطر ، يجب عليك تعديل التعليمات البرمجية الخاصة بك مثل هذا:
m = get(h_masa,'String');
nRows = size(m,1);
for iRow = 1:nRows
eval(m(i,:));
end