Octave问题如果x == 0&&amp ;,则运行matlab文件。 strmatch(xx,'');

时间:2016-11-12 17:40:53

标签: matlab octave

好的,我正在试图找出为什么Octave在运行我收到的Matlab代码时出现问题。没有什么事情显然是错误的,但也许有一些差异,Octave正陷入困境。

因此,matlab文件读取文本文件,选择所需数据,并创建结构。它正确读取文件并试图输出结构但结构为空。我相信我找到了它被躲藏的地方,但我不明白为什么会被困在那里。

% If not at the end of the file, search for the desired information.
while (current_line ~= -1) && (epoch_count < max_epochs)


    %Check if this line is a comment line.
    if isempty(strfind(current_line,'COMMENT') )


    % Check event flag
    event_flag = str2num(current_line(27:29));
    event_flag_more_strict = current_line(27);

    if event_flag == 0 && strmatch(event_flag_more_strict,' ')

    yr = adjustyear(str2num(current_line(2:3)));

    % Get the time for this data epoch.
    current_time = [ yr ; str2num(current_line(5:6)) ; ...
            str2num(current_line(8:9)) ; str2num(current_line(11:12)) ; ...
            str2num(current_line(14:15)) ; str2num(current_line(16:26)) ]';
.
.
.

我遇到的问题是目前这个代码区域。 Current_line是在每一行中找到的值的向量。如果该行不是注释,并且该行中的特定值与event_flags匹配,那么请在提取所需的值时进行一些操作。我检查了isempty部分并确保标志正常工作。但由于某种原因,它没有进入第二个if语句。 Octave不会接受有关该声明的内容吗?

我有Octave 4.0.3。

由于

2 个答案:

答案 0 :(得分:0)

我不知道Octave,但即使在MATLAB中也有问题。

使用&& you should use only logicals时,

strmatch会返回一个数字。

您可以将其更改为&或将其转换为逻辑:

logical(strmatch(event_flag_more_strict,' '))

或最好使用strncmpstrcmp

答案 1 :(得分:0)

嗯,是的,在' '的情况下,octave似乎与matlab的行为不同:

八度音程(4.0.3):

>> strmatch(' ', ' ') % octave
ans = [](0x1)

在matlab(2013b)中:

>> strmatch(' ', ' ') % matlab
ans =
     1

这可能是也可能不是八度音中的错误,但不管怎样,这个函数似乎都被弃用了strncmp(无论是在八度音阶还是在matlab中)。