[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Matlab to Octave - problem wih the conversion
From: |
Istan |
Subject: |
Matlab to Octave - problem wih the conversion |
Date: |
Wed, 3 Aug 2016 06:57:45 -0700 (PDT) |
Hello everybody,
I have used a little code on Matlab, which runs perfectly well. For few
reasons, I want to use a freeware. The high compatibility matlab/octave is
the reason why I have chosen Octave. However, my code doesn't run at all, it
seems there is a problem with textscan. If someone can help me to resolve my
problem :
The code :
% generate a function instead of a script.
% Auto-generated by MATLAB on 2016/07/29 16:20:55
%% Initialize variables.
delimiter = ' ';
%% Read columns of data as strings:
% For more information, see the TEXTSCAN documentation.
formatSpec = '%s%s%[^\n\r]';
%% Open the text file.
fileID = fopen('1.txt','r');
%% Read columns of data according to format string.
% This call is based on the structure of the file used to generate this
% code. If an error occurs for a different file, try regenerating the code
% from the Import Tool.
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter,
'MultipleDelimsAsOne', true, 'ReturnOnError', false);
%% Close the text file.
fclose(fileID);
%% Convert the contents of columns containing numeric strings to numbers.
% Replace non-numeric strings with NaN.
raw = [dataArray{:,1:end-1}];
numericData = NaN(size(dataArray{1},1),size(dataArray,2));
for col=[1,2]
% Converts strings in the input cell array to numbers. Replaced
non-numeric
% strings with NaN.
rawData = dataArray{col};
for row=1:size(rawData, 1);
% Create a regular expression to detect and remove non-numeric
prefixes and
% suffixes.
regexstr =
'(?<prefix>.*?)(?<numbers>([-]*(\d+[\,]*)+[\.]{0,1}\d*[eEdD]{0,1}[-+]*\d*[i]{0,1})|([-]*(\d+[\,]*)*[\.]{1,1}\d+[eEdD]{0,1}[-+]*\d*[i]{0,1}))(?<suffix>.*)';
try
result = regexp(rawData{row}, regexstr, 'names');
numbers = result.numbers;
% Detected commas in non-thousand locations.
invalidThousandsSeparator = false;
if any(numbers==',');
thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$';
if isempty(regexp(thousandsRegExp, ',', 'once'));
numbers = NaN;
invalidThousandsSeparator = true;
end
end
% Convert numeric strings to numbers.
if ~invalidThousandsSeparator;
numbers = textscan(strrep(numbers, ',', ''), '%f');
numericData(row, col) = numbers{1};
raw{row, col} = numbers{1};
end
catch me
end
end
end
%% Replace non-numeric cells with NaN
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % Find non-numeric
cells
raw(R) = {NaN}; % Replace non-numeric cells
%% Allocate imported array to column variable names
VarName1 = cell2mat(raw(:, 1));
x1 = cell2mat(raw(:, 2));
%% Clear temporary variables
clearvars filename delimiter formatSpec fileID dataArray ans raw numericData
col rawData row regexstr result numbers invalidThousandsSeparator
thousandsRegExp me R;
%%%%%%%%%%%%%%%
plot(VarName1*1000,x1,'k')
axis([0 100 600 1600])
%%%%%%%%%%%%%%
and the file 1.txt
<http://octave.1599824.n4.nabble.com/file/n4678981/1.txt>
Thank you for reading and help.
Guillaume
--
View this message in context:
http://octave.1599824.n4.nabble.com/Matlab-to-Octave-problem-wih-the-conversion-tp4678981.html
Sent from the Octave - General mailing list archive at Nabble.com.
- Matlab to Octave - problem wih the conversion,
Istan <=
- Re: Matlab to Octave - problem wih the conversion, Juan Pablo Carbajal, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Sebastian Schöps, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Istan, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Juan Pablo Carbajal, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Juan Pablo Carbajal, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Istan, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Juan Pablo Carbajal, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Istan, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Juan Pablo Carbajal, 2016/08/04
- Re: Matlab to Octave - problem wih the conversion, Istan, 2016/08/05