怎么还把“优化后文本”也复制了呢XD,我看完这个PYTHON图扔给AI发现主要原因是【变量名包含空格以及^】,
MATLAB 中,变量名
严禁包含空格 ,但是
Python 的 scipy.io.loadmat 是将其读入为字典(Dictionary),键值(Key)可以是任何字符串,所以它能成功。
so...
Maybe you could try this code, by gemini:
function data_struct = read_dsi_mat(file_path)
fid = fopen(file_path, 'rb');
data_struct = struct();
while ~feof(fid)
header = fread(fid, 5, 'int32');
if isempty(header) || length(header) < 5, break; end
type = header(1);
mrows = header(2);
ncols = header(3);
imagf = header(4);
namelen = header(5);
raw_name = fread(fid, namelen, 'uint8=>char')';
var_name = strtrim(raw_name);
var_name = var_name(var_name ~= 0);
precision_code = mod(floor(type/10), 10);
if precision_code == 1 || type == 10
precision = 'single';
else
precision = 'double';
end
total_elements = mrows * ncols;
if total_elements > 0
data = fread(fid, [mrows, ncols], precision);
safe_name = regexprep(var_name, '[^a-zA-Z0-9]', '_');
safe_name = regexprep(safe_name, '_+', '_');
safe_name = strtrim(regexprep(safe_name, '^_+|_+$', ''));
if isstrprop(safe_name(1), 'digit')
safe_name = ['v' safe_name];
end
data_struct.(safe_name) = data;
end
if imagf == 1
if strcmp(precision, 'single')
fseek(fid, total_elements * 4, 'cof');
else
fseek(fid, total_elements * 8, 'cof');
end
end
end
fclose(fid);
end
我的是读取成功了,希望能帮到你!