我正在尝试用大矩阵(1500x100类型的尺寸)进行fprintf。我试过这个:
for i=1:1500
fprintf(filename,'%s %f \n', words_cell{i}, polS_matrix(i,:));
end
但我不知道如何编写%s %f
部分,因为我的矩阵长度为100,编写100 %f
会非常麻烦。有没有办法轻松做到这一点?我查看了matlab fprintf页面,但我看不到任何可以使用的内容。
答案 0 :(得分:3)
您可以使用嵌套的sprintf('%f ', polS_matrix(i,:))
作为矩阵:
%f
即使只有一个i
,这也会隐含地取所有矩阵元素,从行for k = 1:1500
fprintf(filename,'%s %s \n', words_cell{k}, sprintf('%f ', polS_matrix(k,:)));
end
中的所有数字生成一个字符串。
您可能还想更改迭代索引名称以避免遮蔽虚构单元。
所以,代码是:
Dim objFso
Set objFso = CreateObject("Scripting.FileSystemObject")
Dim strPath, yr, mnt
yr = CStr(Year(Now))
mnt = CStr(Month(Now))
strPath = "c:\\users\upload files\email " + yr
Dim strContent
strContent = ""
Set objFolder = objFso.GetFolder(strPath)
For Each objFile In objFolder.Files
If objFso.GetExtensionName (objFile.Path) = "pdf" Then
If objFile.DateLastModified > dateadd("hr", -24, Now) Then
strContent = strContent + "<li>" + _
"<a href=""C://Users/uploadfiles/email/" + yr + "/" + _
objFile.Name + """>" + objFile.Name + "</a></li>"
MsgBox(strContent)
End If
End If
答案 1 :(得分:1)
怎么样
for i=1:1500
fprintf(filename,strcat('%s ', repmat('%f ',1,100), ' \n'), words_cell{i}, polS_matrix(i,:));
end
或者,为了表现:
formatSpecifiersString = strcat('%s ', repmat('%f ',1,100), ' \n');
for i=1:1500
fprintf(filename, formatSpecifiersString, words_cell{i}, polS_matrix(i,:));
end
[编辑:在repmat中添加空格('%s'..) - &gt; repmat('%f'..)]
答案 2 :(得分:1)
我会依赖fprintf
的版本化特性,并对文件流使用三个单独的调用:
for i=1:size(polS_matrix,1)
fprintf(filename , '%s' , words_cell{i});
fprintf(filename , ' %f' , polS_matrix(i,:));
fprintf(filename , '\n');
end