2015-07-16 2 views
-1

В этом MatLab код,Как объявить переменную matlab для хранения строки?

% kalimba memory read 
clear all 
clc 
close all 
read_val = zeros(128, 1); 
read_val_INDEX = 1; 
fid = fopen('kal_mem_data.txt', 'r'); 
% assume each row has 1 address string and 16 data strings 
for j=1:8 
    asd = fscanf(fid, '%s', 1); % skip the address string 
    for i=1:16 
     read_val(read_val_INDEX) = fscanf(fid, '%s', 1); 
     read_val_INDEX = read_val_INDEX + 1; 
    end 
end 
fclose(fid); 

kal_mem_data.txt имеет список шестнадцатеричных чисел как

0001c1 FF45DF... 

Первый зсапЕ работает без проблем

asd = fscanf(fid, '%s', 1); 

ASD автоматически typecasted обугливаться type для хранения шестнадцатеричной строки в виде массива символов
Как предварять массив re ad_val, так что каждый элемент read val является строкой?
Есть ли простой способ сделать это в Matlab?

+0

да они же длины, 6 значные шестнадцатеричные числа – user13267

ответ

2

Если все строки имеют одинаковую длину:

Вы можете предварительно выделить 128x6 матрицу (при условии, что длина строки будет 6), как это:

read_val = char(zeros(128, 6, 'uint8')); 

Затем вы читали каждую строку на линия, как это:

read_val(read_val_INDEX, :) = fscanf(fid, '%s', 1); 

Если строки не обязательно имеют одинаковую длину:

Один хороший подход будет использовать массив ячеек, например:

read_val = cell(128, 1); 

А вы читали, как это:

read_val{read_val_INDEX} = fscanf(fid, '%s', 1);