0

我正在使用带有弹出菜单的 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'。

指定的端口无效。

我怎样才能得到选择的价值?

4

3 回答 3

1

我讨厌通过 2 个显然还不错的答案来解决问题,但魔鬼在细节中。是的,您不能将 MATLAB 中的字符串与+运算符连接起来,但您问题中的第一个危险信号是您的错误消息表明 acell作为+. 请注意,disp此时甚至没有抛出错误,它是+. 这让我相信你的代码实际上disp('serialPort ' + serialPort);不是一个数组disp('serialPort ' + serialPortValue);。这是一个错字吗?serialPortListcell

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

连同有效的字符串连接,

>> serialPort = serialPortList{serialPortValue};
>> disp(['serialPort ' serialPort])
serialPort 'COM3'

单引号位于字符串中,因为您使用 . 设置字符串的方式,set(handles.popupmenuSerialPort,'String',...所以如果您想去掉它,可以使用strrep(serialPort,'''','')

请注意,fprintf如果您对这种字符串格式风格更满意,也可以使用。

于 2013-10-07T23:13:52.707 回答
0

您不能使用 '+' 在 matlab 中组合字符串。你可以做:

disp(['serialPort',num2str(serialPortValue)]);
于 2013-10-07T19:32:00.877 回答
0

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

于 2013-10-07T19:32:45.947 回答