从MatLab中的弹出菜单返回字符串值
我正在用MATLAB(指南)开发一个简单的GUI,其中有一个弹出菜单。以便通过串行端口建立连接从MatLab中的弹出菜单返回字符串值,matlab,matlab-guide,Matlab,Matlab Guide,我正在用MATLAB(指南)开发一个简单的GUI,其中有一个弹出菜单。以便通过串行端口建立连接 function sendLog_OpeningFcn(hObject, eventdata, handles, varargin) set(handles.popupmenuSerialPort,'String', {'''COM1''','''COM2''','''COM3''','''COM4'''}); ... 我希望通过以下方式获得所选值: serialPortList = get(han
function sendLog_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.popupmenuSerialPort,'String', {'''COM1''','''COM2''','''COM3''','''COM4'''});
...
我希望通过以下方式获得所选值:
serialPortList = get(handles.popupmenuSerialPort,'String');
serialPortValue = get(handles.popupmenuSerialPort,'Value');
serialPort = serialPortList(serialPortValue);
disp('serialPort ' + serialPortValue);
但我在disp函数上收到一条错误消息:
类型为“cell”的输入参数的未定义函数“plus”
指定的端口无效
如何获得所选值?在matlab中不能使用“+”组合字符串。 你可以做:
disp(['serialPort',num2str(serialPortValue)]);
尝试数组连接:
disp(['SerialPort:'serialPortValue])代码>我讨厌费力地回答两个显然不坏的答案,但这里的魔鬼在细节中。是的,您不能将MATLAB中的字符串与+
运算符连接起来,但问题中的第一个红色标志是错误消息指示单元格作为+
的参数之一注意,disp
在这一点上甚至没有抛出错误,它是+
这让我相信您的代码实际上是disp('serialPort'+serialPort')代码>非disp('serialPort'+serialPortValue)
因为serialPortList
是一个单元格
数组。这是打字错误吗
因此,通过索引它,如serialPort=serialPortList(serialPortValue)
您在serialPort
中得到一个单元格,它不能与正确的字符串连接或disp
一起工作。这里的更正是使用大括号({}
)
连同有效的字符串连接
>> serialPort = serialPortList{serialPortValue};
>> disp(['serialPort ' serialPort])
serialPort 'COM3'
字符串中有单引号是因为您使用set(handles.popupmenuSerialPort,'string',…
)设置字符串,所以如果您想去掉它,可以使用strep(serialPort,'''',)
请注意,如果您对该样式的字符串格式更熟悉,也可以使用fprintf