Arrays 如何声明一个matlab变量来存储字符串?
在这个matlab代码中Arrays 如何声明一个matlab变量来存储字符串?,arrays,string,matlab,Arrays,String,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); % ski
% 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 012345 ...
第一个scanf工作正常
asd = fscanf(fid, '%s', 1);
asd自动类型转换为char类型,以将十六进制字符串存储为字符数组如何预先声明数组读取值,以便读取值的每个元素都是字符串?
在matlab中有没有一种简单的方法可以做到这一点?如果所有字符串的长度都相同: 您可以预先分配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);
然后,您将读取一行中的每个字符串,如下所示:
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);
如果字符串的长度不一定相同:
一个好的方法是使用单元数组,如下所示:
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);
你会这样读:
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);
是的,它们是相同长度的6位十六进制数字