从MatLab的弹出菜单中返回一个String值

时间:2013-10-07 18:53:38

标签: matlab matlab-guide

我正在使用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函数上收到错误消息:

  

未定义函数'plus'表示'cell'类型的输入参数。

     

指定了无效的PORT。

我怎样才能获得所选的值?

3 个答案:

答案 0 :(得分:1)

我讨厌通过两个明显不错的答案,但这里的魔鬼就是细节。是的,您不能在MATLAB中将字符串与+运算符连接,但问题中的第一个红色标记是您的错误消息指示cell作为+的参数之一。 请注意,disp此时甚至没有抛出错误,它是+这让我相信您的代码实际上是disp('serialPort ' + serialPort);而不是{{ 1}}因为disp('serialPort ' + serialPortValue);是一个serialPortList数组。这是一个错字吗?

因此,通过像cell那样对其进行索引,您会在serialPort = serialPortList(serialPortValue);中获得单个单元格,但这不适用于正确的字符串连接或serialPort。这里的更正是使用花括号(disp)。

与有效的字符串连接一起,

{}

由于您使用>> serialPort = serialPortList{serialPortValue}; >> disp(['serialPort ' serialPort]) serialPort 'COM3' 设置字符串的方式,单引号位于字符串中,因此如果要删除它,可以使用set(handles.popupmenuSerialPort,'String',...

请注意,如果您更熟悉这种字符串格式,也可以使用strrep(serialPort,'''','')

答案 1 :(得分:0)

你不能使用'+'来组合matlab中的字符串。 你可以这样做:

disp(['serialPort',num2str(serialPortValue)]);

答案 2 :(得分:0)

尝试数组连接:
disp(['SerialPort : ' serialPortValue]);