用于matlab中的大矩阵的fprintf

时间:2016-06-20 12:00:45

标签: matlab

我正在尝试用大矩阵(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页面,但我看不到任何可以使用的内容。

3 个答案:

答案 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