【发布时间】:2019-04-25 18:37:35
【问题描述】:
我在 MATLAB 中使用 fprintf() 函数时遇到了一些意外行为。我正在尝试使用单元格数组和数值数组的内容打印多行文件。我知道我可以使用 fprintf() 函数如下打印出单元格数组的内容:
myCellArray = {'one','two','three'};
fprintf('%s\n',myCellArray{:})
这会产生以下输出:
one
two
three
我也可以打印出一个数值数组如下:
myNumericalArray = [1,2,3];
fprintf('%i\n',myNumericalArray)
这会导致:
1
2
3
但是,如果我尝试混合这些,就会出现奇怪的行为,如下所示:
fprintf('%s is %i\n',myCellArray{:},myNumericalArray)
这会导致:
one is 116
wo is 116
hree is 1
我认为这是因为 MATLAB 尝试打印myCellArray 中的下一个条目来代替%i,而不是使用myNumericalArray 中的第一个条目。如果我输入以下内容,这一点很明显:
fprintf('%s %s\n',myCellArray{:},myCellArray{:})
结果:
one two
three one
two three
...有什么方法可以确保每行只使用每个数组中的一个元素?
【问题讨论】: