> 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.

>

> _______________________________________________

> Help-octave mailing list

>

[hidden email]
>

https://lists.gnu.org/mailman/listinfo/help-octaveGNU Octave is not freeware, it is FOSS software. It might be good to

take a look and understand the difference. You wont make many friends

calling FOSS projects "freeware".

you are allowed to use it in Octave. Could you check the Terms of Use?

products.