从MatLab中的弹出菜单返回字符串值

从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

我正在用MATLAB(指南)开发一个简单的GUI,其中有一个弹出菜单。以便通过串行端口建立连接

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