[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: textscan wanted
From: |
Liam Groener |
Subject: |
Re: textscan wanted |
Date: |
Wed, 20 Oct 2010 18:52:02 -0700 |
On Oct 20, 2010, at 3:03 AM, Ben Abbott wrote:
> On Oct 20, 2010, at 1:55 PM, Ben Abbott wrote:
>
>> On Oct 20, 2010, at 1:39 PM, Dr. Johannes Zellner wrote:
>>
>>> 2010/10/20 Ben Abbott <address@hidden>
>>> On Oct 20, 2010, at 4:53 AM, Dr. Johannes Zellner wrote:
>>>
>>>>> Hi,
>>>>>
>>>>> I've a bunch of matlab files which use textscan.
>>>>>
>>>>> I don't want to replace all textscan calls with something like fscanf but
>>>>> I'd rather like to have an octave function which implements textscan().
>>>>>
>>>>> Does anyone have a textscan implementation?
>>>>>
>>>>> regards,
>>>>>
>>>>> --
>>>>> Johannes.
>>>>
>>>> I've opened a ticket in the bug tracker.
>>>>
>>>> https://savannah.gnu.org/bugs/index.php?31380
>>>>
>>>> For now, have you looked at using textread() instead? Unfortunately,
>>>> textread() is not fully compatible with the ML version.
>>>>
>>>> The syntax for ML's textscan is ...
>>>>
>>>> C = textscan (fid, 'format')
>>>> C = textscan (fid, 'format', N)
>>>> C = textscan (fid, 'format', 'param', value)
>>>> C = textscan (fid, 'format', N, 'param', value)
>>>> C = textscan (str, ...)
>>>> [C, position] = textscan (...)
>>>>
>>>> If you don't require the input "N", it should be straight forward to
>>>> modify scantext() to implement textscan(). A quick fix would support the
>>>> limited syntax below.
>>>>
>>>> C = textscan (fid, 'format')
>>>> C = textscan (fid, 'format', 'param', value)
>>>> C = textscan (str, ...)
>>>>
>>>> Would that be useful to you?
>>>>
>>>> Ben
>>>
>>> Ben,
>>>
>>> thanks for the quick response.
>>> It would be more useful, if it would also allow the input parameter N.
>>>
>>> regards,
>>
>> Ok. Can you provide a simple example with both an input file and a script
>> that uses textscan() with the parameter N to read some data?
>>
>> Ben
>
> I found some simple examples on the web, and made an attempt at implementing
> the function.
>
> I'd appreciate it if you can try the attached textscan.m and let us know if
> it works for you.
>
> Ben
>
> <textscan.m>
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
Hi Ben,
I downloaded the textscan.m and strread.m from your emails and tried the
following simple script from a Matlab book using Octave 3.2.3:
B = [30 40 60 70];
fid = fopen('myoutput','w');
fprintf(fid,'%g miles/hr = %g kilometers/hr\n',[B;8*B/5]);
fclose(fid);
fopen('myoutput','r');
X = fscanf(fid,'%f miles/hr = %f kilometers/hr')
C = textscan(fid,'%f miles/hr = %f kilometers/hr')
fclose(fid);
This was the output:
X =
30
48
40
64
60
96
70
112
error: A(I): Index exceeds matrix dimension.
error: called from:
error: /Users/liamg/mFiles/textscan.m at line 60, column 3
error: /Users/liamg/mFiles/tst.m at line 8, column 3
The file "myoutput" was written correctly.
Liam