数日前、私はこの質問を投稿し、次の素晴らしい解決策を得ました:
fid = fopen('C:\Testes_veloc\test.txt', 'Wt');
fmt = sprintf('%s;%d;%%d;%d;%d;%%d;%%d;%%d;%%.4f \\n',str1,num1,0,2)
[a,b,c,d] = ndgrid(vect2,vect1,day,1:15);
out = sprintf(fmt, [d(:), c(:), b(:), a(:), reshape(permute(MD,[2,1,3,4]),[],1)]');
fprintf(fid, '%s', out);
変数str1
、num1
、day
、vect1
、vect2
およびMD
は、この関数の入力です。
str1
文字列 1x1 ですnum1
整数 1x1 ですday
はベクトル 10x1 ですvect1
ベクトルは 7x1 ですvect2
ベクトルは 180x1 ですMD
4D マトリックス (7x180x10x15) です。
目的は、次のようなテキスト ファイルを持つことでした。
result.txt:
RED;12;7;0;2;1;4;7;0.0140
RED;12;7;0;2;2;9;7;0.1484
RED;12;7;0;2;3;7;4;0.1787
RED;12;7;0;2;4;2;6;0.7891
RED;12;7;0;2;5;9;6;0.1160
RED;12;7;0;2;6;9;1;0.9893
ただし、str1
1x1 文字列ではありません。それは名前のベクトル (189000x1) で、私が望むテキストの長さです。つまり、「RED」だけでなく、他にもさまざまな文字列があります。このベクトル化されたループをこの状況に合わせることは可能ですか?
私はこれを試しました(連結部分に追加しstr1(:)
ます)が、失敗しました:
fmt = sprintf('%%s;%s;%d;%%d;%d;%d;%%d;%%d;%%d;%%.4f \\n',str1,num1,0,2)
out = sprintf(fmt, [str1 (:), d(:), c(:), b(:), a(:), reshape(permute(MD,[2,1,3,4]),[],1)]');
たとえば、str(1,:) = 'RED'
; str(2,:) = 'FHAW'
; str(3,:) = 'KI81'
; このような細胞です。文字列を数字に連結できません。誰にも解決策がありますか?
前もって感謝します。