我正在尝试在Matlab中的括号之间导入数字。我正在使用OpenFoam软件生成一个文件,该文件在不同的时间步长的许多不同位置提取速度' s(u,v,w)。我想导入这些速度,所以我可以在一定时间内取平均值。我的流域中有大约250个探测器,这意味着我想为许多不同的时间步骤导入750个不同的数字。该文件如下所示:
链接到文件: https://drive.google.com/file/d/1CuoflLADasUybsR4UJf1PQBUcGD0SsVb/view?usp=sharing
所以我想将所有数字导入到一个大小((时间步数)X(探针)的矩阵中)
我发现了一个可行的代码并导入了这些数字,但这非常手动。我必须写出probexx(i,:) =(str2double(split(out {i,1} {1,xx}} )))&#39 ;;手动250次以使其工作。我想有一个更自动的代码,所以我可以轻松地更改探测的数量。有谁可以帮助我?
提前谢谢!
let body = {
"grant_type": "authorization_code",
"client_id": Meteor.settings.public.mailchimp.clientId,
"client_secret": Meteor.settings.private.mailchimp.secret,
"redirect_uri": Meteor.settings.public.mailchimp.redirect_uri,
"code": code,
}
HTTP.call("POST",
`https://login.mailchimp.com/oauth2/token`, {
data: body,
headers: {
"Content-Type": "application/json",
"Content-Encoding": "",
"User-Agent": "oauth2-draft-v10"
},
npmRequestOptions: {
"gzip": true //Required to read error
}
}
... Code continued
答案 0 :(得分:2)
我会这样做,假设每一行在标题行之后是统一的。
id = fopen('probes.dat','r');
t = textscan(id,'%f','Delimiter',{'(',')',' '},'MultipleDelimsAsOne',true,'headerlines',5);
fclose(id);
numProbes = 254;
temp = reshape(t{1},numProbes*3+1,[]);
outData.time = temp(1,:).';
for ii = 1:numProbes
rowIdx = (ii-1)*3+2:(ii-1)*3+4;
outData.(num2str(ii,'probe%d')) = temp(rowIdx,:).';
end
基本上将所有数值数据读入1个数组。使用多个分隔符功能并指定标题行数。下一次重塑基于探测器的数量(在您的示例中,DAT有254个)。
然后遍历探测器数量,将其分配给具有所需变量名称的结构字段(probeXX)。
这将为您提供以下形式的结构:
outData =
time: [47x1 double]
probe1: [47x3 double]
probe2: [47x3 double]
probe3: [47x3 double]
...
probe254: [47x3 double]