Arrays 创建单行矩阵时出现问题
我有一个for循环,它创建了一个1825列的矩阵。该矩阵包含一个从0到1的值,增量为0.013888889,阶跃增量为25(因此在25个零之后,它变为0.013888889,然后在25倍之后再次增加)。我的问题是,包含1的最后25列没有创建。我得到的矩阵不是带有Arrays 创建单行矩阵时出现问题,arrays,matlab,for-loop,matrix,Arrays,Matlab,For Loop,Matrix,我有一个for循环,它创建了一个1825列的矩阵。该矩阵包含一个从0到1的值,增量为0.013888889,阶跃增量为25(因此在25个零之后,它变为0.013888889,然后在25倍之后再次增加)。我的问题是,包含1的最后25列没有创建。我得到的矩阵不是带有1x1825的矩阵,而是没有1s的1x1800。代码如下: coutput=repmat([0],1,25); 对于n=0.013888889:0.013888889:1 coutput=[coutput repmat([n],1,25)
1x1825
的矩阵,而是没有1s的1x1800
。代码如下:
coutput=repmat([0],1,25);
对于n=0.013888889:0.013888889:1
coutput=[coutput repmat([n],1,25)];
结束
问题来自循环变量:
n=0.013888889:0.013888889:1
让我们比较一下:
temp=0:0.0138889:1;
温度([1 2端-1端])
n=72;
temp=linspace(0,1,n+1);
温度([1 2端-1端])
我们得到:
ans=
0.00000 0.01389 0.97222 0.98611
ans=
0.00000 0.01389 0.98611 1.00000
使用您的解决方案,我们得到了一个维度为1x72
的向量,而“更精确”的版本给出了一个维度为1x73
的向量。所以,最后,这是一个取整问题
通过使用repmat
和:
k=25;
out=重塑(repmat(温度,k,1),1,(n+1)*k)
(此处省略输出。)
希望有帮助 问题来自循环变量:
n=0.013888889:0.013888889:1
让我们比较一下:
temp=0:0.0138889:1;
温度([1 2端-1端])
n=72;
temp=linspace(0,1,n+1);
温度([1 2端-1端])
我们得到:
ans=
0.00000 0.01389 0.97222 0.98611
ans=
0.00000 0.01389 0.98611 1.00000
使用您的解决方案,我们得到了一个维度为1x72
的向量,而“更精确”的版本给出了一个维度为1x73
的向量。所以,最后,这是一个取整问题
通过使用repmat
和:
k=25;
out=重塑(repmat(温度,k,1),1,(n+1)*k)
(此处省略输出。)
希望有帮助 如上所述,这是一个取整问题。不应将浮点值用作循环索引 实现循环的简单而正确的方法是:
对于n=1:72
n=ii/72;
%...
结束
当然,使用Hans的repmat+
重塑
解决方案,这段代码会更加高效,因为它避免了在循环内重复重新分配输出数组。正如HansHirse上面指出的,这是一个舍入问题。不应将浮点值用作循环索引
实现循环的简单而正确的方法是:
对于n=1:72
n=ii/72;
%...
结束
但当然,使用Hans的repmat
+重塑
解决方案,这段代码会更加高效,因为它避免了在循环中重复重新分配输出数组