Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 创建单行矩阵时出现问题_Arrays_Matlab_For Loop_Matrix - Fatal编程技术网

Arrays 创建单行矩阵时出现问题

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)

我有一个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)];
结束

问题来自循环变量:

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
+
重塑
解决方案,这段代码会更加高效,因为它避免了在循环中重复重新分配输出数组