MATLAB: Making a title using editable strings without stacking


So, I have this GUI that takes a excel sheet, or CSV file and plots the data inside the sheet. On top of that I have edit boxes that creste labels on the plot of the GUI. The plotting works and the label making works, but I have a check box that add elements to the tile based off what your labels are. saddly, the lements instead of rweading out in one line, stack ontop of eachother
and the code is such
function Excel_Button_Callback(hObject, eventdata, handles)
numdata=xlsread(uigetfile({'.xlsx'},'File Selector'))
xlabel(get(handles.X_Label_Input, 'String'));
ylabel(get(handles.Y_Label_Input, 'String'));
title(get(handles.Title_Input, 'String'));
if (get(handles.VsCheck, 'Value'))==1;
title([get(handles.Title_Input, 'String') get(handles.Y_Label_Input, 'String') 'vs' get(handles.X_Label_Input, 'String') date]);

Best Answer

  • In the code you have shown the second to last line as
    title([get(handles.Title_Input, 'String') get(handles.Y_Label_Input, 'String') 'vs' get(handles.X_Label_Input, 'String') date]);
    "get" will give you cell array and then you are trying to concatenate cell as a string but instead MATLAB is concatenating it as a cell array. So, to resolve this you can try using "strjoin" to covert cell into string and then concatenate. For more info on "strjoin" you can use:
    help strjoin
    To get the expected results replace 2nd to last line with the line below :
    title([strjoin(get(handles.Title_Input, 'String')),strjoin(get(handles.Y_Label_Input, 'String')),...
    'vs',strjoin(get(handles.X_Label_Input, 'String')),date]);
    I hope it helps!