реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> MATLAB - запись в файл, Как записать и прочитать из файла данные, например, массив
michael34
сообщение Jul 2 2007, 10:55
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 24-01-06
Пользователь №: 13 541



Есть массив или число. Как записать его в текстовый файл. И как считать массив или число из файла. Какие функции лучше использовать?
Go to the top of the page
 
+Quote Post
Alexander_
сообщение Jul 2 2007, 14:40
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 7-04-06
Пользователь №: 15 929



Как-то делал чтение из файла построчно с помощью функции textscan и запись с помощью fprintf. Есть еще fscanf, fread, fwrite.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jul 2 2007, 19:32
Сообщение #3


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Не устаю повторять что в матлабе прекрасный хелп. На такие вопросы ответ ищется там за 2 минуты
Go to the top of the page
 
+Quote Post
Losik
сообщение Jul 3 2007, 10:55
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 453
Регистрация: 22-04-07
Пользователь №: 27 235



или спросить у гугла
http://www.nsu.ru/matlab/MatLab_RU/simulink/book2/3.asp.htm
or
http://www.ssga.ru/metodich/informatics/10.html
Go to the top of the page
 
+Quote Post
Alex_AZ
сообщение Sep 20 2007, 07:04
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 26-07-07
Из: Челябинск
Пользователь №: 29 374



Если нужно просто записать/считать матрицу в файл/из файла, то есть хорошие функции dlmread и dlmwrite. Подробнее в хелпе Матлаба.
Go to the top of the page
 
+Quote Post
Unomano
сообщение Sep 21 2007, 07:23
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-09-05
Из: Минск, Беларусь
Пользователь №: 8 203



Сначала надо определиться в каком формате данные будут храниться в файле: binary или ASCII.
Go to the top of the page
 
+Quote Post
syoma
сообщение Sep 21 2007, 21:57
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Самое простое что есть в Матлабе:
save file.txt variable - ascii
где file.txt - название файла
variable - переменная или матрица, которую надо сохранить.
Получается текстовый легко просамтриваемый любым просмоторщиком файл и легко импортируемый в ексель и другие проги.
Load делает обратную загрузку.
Go to the top of the page
 
+Quote Post
beaRTS
сообщение Nov 26 2012, 05:06
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111



Товарищи, помогите, пожалуйста.
Делаю конвертацию float (single) отсчетов моего сигнала из десятичной системы счисления в шестнадцатеричную. Пишу скрипт в матлабе, т.к. сэмплы оттуда получаю.
Для конвертации использую
num2hex( single( value ) );
И полученный массив сэмплов в hex'е надо бы вывести в *dat-файл (чтоб в hex внутри все было). но чего-то не выходит =(

Код
% Create scrip that convert float numbers to hexidecimal.
% This file is useful for example if we need to load *.dat file to Code
% Composer Studio. But this dat-file can understand only hexidecimal format
% of number types such as int, long, float.

% For start to work You must to set the input/output file name and path
%and data type working with
filename = 'dspInputSamples.dat';
outFileName = 'dspInputSamplesHEX.dat';
dataType = 'single';   %data of this type we read from input file with
                       % "filename" name

%descriptor of the file that must be opened
%fid = fopen('my_file.dat', 'wb');     % открытие файла на запись
inputFID = fopen( filename, 'rb');
if inputFID == -1
    error('input File is not opened');
end

%descriptor of teh output file
outputFID = fopen(outFileName, 'wb+');
if outputFID == -1
    error('output File is not opend');
end

%initialize the 1-D row vector. In this value we will save unput data
rowVec = 0;

%READ FROM FILE
%samplesCnt - the number of elements read
[rowVec, samplesCnt ] = fscanf( inputFID, '%f', inf );

%preallocate 1D column vector
rowVecHEX = zeros( 1, samplesCnt, dataType);

%CONVERTION
rowVecHEX = num2hex( single( rowVec ) );

%WRITE TO FILE
%fprintf( outputFID, '%.9f\r\n', rowVec );
fprintf( outputFID, '%s\r\n', rowVecHEX );
%save( outFileName, rowVecHEX);

%display the row vector
disp( rowVecHEX );
fclose( inputFID );
fclose( outputFID );

прилагаю всю папку из матлаба.
P.s. гуглить -гуглил, дельное найти не могу. ТО, что нашел - не помогает, но толи формулировка не та, то ли ....
В консоль матлаба то выводит нормально.
Из консоли:
bd3e4111
3c5fb523
3d1456b1
3d03ea5e
bc624bc3

Вот надо типа этого получить, только в файле

Сообщение отредактировал beaRTS - Nov 26 2012, 05:27
Прикрепленные файлы
Прикрепленный файл  convert_float2Hex.zip ( 47.91 килобайт ) Кол-во скачиваний: 14
 


--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
Go to the top of the page
 
+Quote Post
Herz
сообщение Nov 26 2012, 06:48
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



А что значит но чего-то не выходит =( ? В файл вообще что-то пишется?
Go to the top of the page
 
+Quote Post
beaRTS
сообщение Nov 26 2012, 07:33
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111



Цитата(Herz @ Nov 26 2012, 10:48) *
А что значит но чего-то не выходит =( ? В файл вообще что-то пишется?

да пишется. если отрабатывает свою работу строчка
fprintf( outputFID, '%.9f\n', rowVec ); % !!! здесь внимание, т.е. это распечатывается просто считанные их входного файла сэмплы
то печатается все норм:
0.025199203
0.013311899
-0.039400969
0.008759023
0.028522894
0.018094452 - такой же и входной файл с семплами

если ее комментируем и заставляем работать строчку по выводу вектора rowVecHEX (с уже конвертированными значениями):
fprintf( outputFID, '%s\r\n', rowVecHEX );
то печатается в файл:
33b333bbb33bb333bbb33bbb33bbb33bbb33bbb33bbb333bb33bbb33bbb333bb33bbb33bbb333bb3
33bb333bbb33bbb33bb333bbb33bb333bb33b ... и т.д.
Все в одну строку ,как будто управляющие символы \r\n не отрабатывают свою функцию - это во-первых, а во-вторых, в hex'се это явно не то, что должно быть
Должно быть :
3d0b5f89
bc09aaca
bd006ee3
bcac6c24
3d159332
3cea444c
bcf2f6ae

Эврика!!!!!!!!! 1111493779.gif я понял

на картинке постарался разъяснить.

все переделал и распечатал в файл, как мне нужно, т.е. чтоб хексовое число начиналось с 0х. Это, вообще-то, все нужно не мне, а Code Composer Studio для отладки алгоритма.
Код
% Create scrip that convert float numbers to hexidecimal.
% This file is useful for example if we need to load *.dat file to Code
% Composer Studio. But this dat-file can understand only hexidecimal format
% of number types such as int, long, float.

% For start to work You must to set the input/output file name and path
%and data type working with
filename = 'dspInputSamples.dat';
outFileName = 'dspInputSamplesHEX.dat';
dataType = 'single';   %data of this type we read from input file with
                       % "filename" name

%descriptor of the file that must be opened
%fid = fopen('my_file.dat', 'wb');     % открытие файла на запись
inputFID = fopen( filename, 'rb');
if inputFID == -1
    error('input File is not opened');
end

%descriptor of teh output file
outputFID = fopen(outFileName, 'wt');
if outputFID == -1
    error('output File is not opend');
end

%initialize the 1-D row vector. In this value we will save unput data
rowVec = 0;

%READ FROM FILE
%samplesCnt - the number of elements read
[rowVec, samplesCnt ] = fscanf( inputFID, '%f', inf );

%preallocate 1D column vector
rowVecHEX = zeros( 1, samplesCnt, dataType);

%CONVERTION
rowVecHEX = num2hex( single( rowVec ) );

%WRITE TO FILE
%fprintf( outputFID, '%.9f\n', rowVec );
fprintf( outputFID, '0x%c%c%c%c%c%c%c%c\n', rowVecHEX' );

%display the row vector
disp( rowVecHEX );

fclose( inputFID );
fclose( outputFID );


Сообщение отредактировал beaRTS - Nov 26 2012, 07:45
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
Go to the top of the page
 
+Quote Post
Herz
сообщение Nov 26 2012, 11:07
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Ну, вот и хорошо.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th July 2025 - 00:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01538 секунд с 7
ELECTRONIX ©2004-2016