2014-09-24 4 views
0

У меня есть FFT, и я хочу сохранить его в .mat-файле, а затем прочитать его из этого файла .mat. Я хочу использовать мои загруженные данные для разделения. Вот мой кодСохраните и загрузите файл fft в .mat

save ('file_fft','a_fft'); 
    b = load ('file_fft'); 
    c = abs (d_fft) ./ abs (b); 

В моем окне командной строки, я вижу, что

b = file_fft [4000 * 1 double]. 

А потом я получаю сообщение об ошибке

'Undefined function 'abs' for input arguments of type 'struct'' 

Я пытался после удаления абс. Я получил эту ошибку

'Undefined function 'rdivide' for input arguments of type 'struct'' 

Есть ли у кого-нибудь идеи, почему он не работает и как я могу его решить?

+0

Вы можете заменить последнюю строку с 'с = Abs (d_fft) ./ abs (b.file_fft); 'и повторите попытку? – sobek

ответ

2

Проверьте documentation для функции load:

S = load(___) загружает данные в S, используя любой из входных аргументов в предыдущего синтаксиса группа.

  • Если имя файла является MAT-файл, то S является матричная структура.

  • Если filename является ASCII-файлом, то S представляет собой массив с двойной точностью , содержащий данные из файла.

Так b представляет собой структуру, и как это было предложено в комментарии, вам необходимо получить доступ к данным в abs(b.a_fft).

1

Проблема заключается в том, что load() уже создает структуру файла, которая находится внутри файла .mat. Когда вы назначаете file_fft с загрузкой, он создает структуру.

Из документации нагрузки(): загружает данные в S

S = нагрузке (_), с использованием любого из входных аргументов в предыдущий синтаксис группы. Если filename является MAT-файлом, то S является структурным массивом.

Edit:

Я получил съязвил :-P

Вот еще один рабочий пример кода:

save ('file_fft','a_fft'); 
load ('file_fft'); 
c = abs (d_fft) ./ abs (file_fft); 
Смежные вопросы