[英]Faster print of a 3D matrix
我有一個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
但是對於大型矩陣來說,這非常緩慢。 有沒有辦法加快這個過程?
這是以八度音程完成的,這意味着Matlab解決方案也可以正常工作。
如果我理解您的輸入數據是正確的,那么您的循環相當於:
fprintf(fid,[repmat('%.16g ',1,size(S,1)) '|\n'],permute(real(S),[1,3,2]));
fprintf
在到達結尾時開始使用格式字符串。 必須使用permute來保存代碼中的順序。
以下是加快速度的一般方法:
m=zeros(3,4,5);
[x,y,z]=size(m);
for k=1:x
for l=1:y
dlmwrite('D:\test.txt',m(k,l,:),'-append','delimiter',' ','newline','pc');
end
dlmwrite('D:\test.txt',[' '],'-append','newline','pc');
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.