SIM*_*MEL 1 matlab matrix octave
我有一个3D大型矩阵,第一个索引(x)表示频率,第二个和第三个索引(y和z)是数据的索引.我想打印所有频率的每个索引的数据,然后打印一个|char和一个新的行char.我通过以下方式执行此操作:
% S is a 3D matrix of size (x,y,z), where y=z and x>>y
N=size(S,2);
MM=real(S);
for mi=1:N
for mj=1:N
fprintf(fid,"%.16g ",MM(:,mi,mj));
fprintf(fid,"|\n");
end
end
Run Code Online (Sandbox Code Playgroud)
但是对于大型矩阵来说,这非常缓慢.有没有办法加快这个过程?
这是以八度音程完成的,这意味着Matlab解决方案也可以正常工作.
如果我理解您的输入数据是正确的,那么您的循环相当于:
fprintf(fid,[repmat('%.16g ',1,size(S,1)) '|\n'],permute(real(S),[1,3,2]));
Run Code Online (Sandbox Code Playgroud)
fprintf到达结尾时开始使用格式字符串.必须使用permute来保存代码中的顺序.