在Matlab中使用fprintf打印多行

在Matlab中使用fprintf打印多行,matlab,matrix,int,printf,Matlab,Matrix,Int,Printf,问题: 编写一个名为Print7的过程来打印0:100范围内可被7整除的所有整数。在一条输出线上打印十个数字。因此,编写一个调用该过程的程序 这就是我所做的 file = fopen('print7.dat','r'); x = 1:100 for x=[1:100] if mod(x,7) == 0; print7 = [x] end end fprintf('print7 %d\n', print7) 现在它的输出变成了数字98,据我所知,它是100下的最大数,

问题: 编写一个名为Print7的过程来打印0:100范围内可被7整除的所有整数。在一条输出线上打印十个数字。因此,编写一个调用该过程的程序

这就是我所做的

 file = fopen('print7.dat','r');

 x = 1:100

 for x=[1:100]
   if mod(x,7) == 0;
    print7 = [x]
 end
end
 fprintf('print7 %d\n', print7)
现在它的输出变成了数字98,据我所知,它是100下的最大数,可以被7整除。但我想要一个10xn矩阵式的结果


我该怎么做?

您所做的将结果存储在变量中,并在每次迭代中覆盖该变量。您可以像这样直接打印它:

c=0;
 for x=[1:100]
   if mod(x,7) == 0
      fprintf('%3d',x)
      c=c+1;
      if mod(c,10) ==0
        fprintf('\n')
      end
   end
end

您正在执行的操作将结果存储在一个变量中,并在每次迭代中覆盖该变量。您可以像这样直接打印它:

c=0;
 for x=[1:100]
   if mod(x,7) == 0
      fprintf('%3d',x)
      c=c+1;
      if mod(c,10) ==0
        fprintf('\n')
      end
   end
end

我想你可能很难理解为什么mod(c,10),因为它的其余部分是非常琐碎的。因此,使用fprintf('%3d',x),我们在计算结果的同一行上打印结果,但由于每10个结果之后,我们需要写入新行,因此需要写入换行符ie“\n”。所以我保留了一个计数器c,它统计到目前为止已经计算了多少个结果,在第10个结果之后,我们添加了一个新行。mod(c,10)检查我们何时在未计数的情况下达到10。我想你可能很难理解mod(c,10)的原因,因为它的其余部分非常简单。因此,使用fprintf('%3d',x),我们在计算结果的同一行上打印结果,但由于每10个结果之后,我们需要写入新行,因此需要写入换行符ie“\n”。所以我保留了一个计数器c,它统计到目前为止已经计算了多少个结果,在第10个结果之后,我们添加了一个新行。mod(c,10)检查我们何时在未计数的情况下达到10。