help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Matlab to Octave - problem wih the conversion


From: Juan Pablo Carbajal
Subject: Re: Matlab to Octave - problem wih the conversion
Date: Thu, 4 Aug 2016 12:10:11 +0200

On Wed, Aug 3, 2016 at 3:57 PM, Istan <address@hidden> wrote:
> 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
> address@hidden
> https://lists.gnu.org/mailman/listinfo/help-octave

Hi,

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

It seems the file you are using belongs to Mathworks and I am not sure
you are allowed to use it in Octave. Could you check the Terms of Use?
last time we checked their files are to be used only with Mathworks
products.

Cheers



reply via email to

[Prev in Thread] Current Thread [Next in Thread]