كيفية قراءة خطوط متعددة من قبل الفرد في نص تحرير مع قيمة ماكس = 5 في ماتلاب?

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

سؤال

لدي في واجهة المستخدم الرسومية حقل نص تحرير يقبل أسطر متعددة بقيمة قصوى تبلغ 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top