好的,我正在试图找出为什么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。
由于
答案 0 :(得分:0)
我不知道Octave,但即使在MATLAB中也有问题。
使用&&
you should use only logicals时, strmatch
会返回一个数字。
您可以将其更改为&
或将其转换为逻辑:
logical(strmatch(event_flag_more_strict,' '))
答案 1 :(得分:0)
嗯,是的,在' '
的情况下,octave似乎与matlab的行为不同:
八度音程(4.0.3):
>> strmatch(' ', ' ') % octave
ans = [](0x1)
在matlab(2013b)中:
>> strmatch(' ', ' ') % matlab
ans =
1
这可能是也可能不是八度音中的错误,但不管怎样,这个函数似乎都被弃用了strncmp
(无论是在八度音阶还是在matlab中)。