Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
在matlab中,如何连接在for循环中计算的值?_Matlab_Loops_For Loop_Concatenation - Fatal编程技术网

在matlab中,如何连接在for循环中计算的值?

在matlab中,如何连接在for循环中计算的值?,matlab,loops,for-loop,concatenation,Matlab,Loops,For Loop,Concatenation,在matlab中,如果我有一个代码,可以计算像这样的for循环中某物的速率 for t=1:10 Ratek=(1/2)*(log2(1+SINR1k)+log2(1+SINR2k)); end 每次速率的值不同,我想在每个循环中连接这个速率的所有值,这样在第10个循环之后,我就可以计算出10个速率来使用它们。我该怎么做呢?我假设您希望将计算结果连接到一个向量;然后,您可以分配给Ratek(end+1)以附加该值 Ratek = [] for t=1:10 Ratek(end+1) = (

在matlab中,如果我有一个代码,可以计算像这样的for循环中某物的速率

for t=1:10
Ratek=(1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
end

每次速率的值不同,我想在每个循环中连接这个速率的所有值,这样在第10个循环之后,我就可以计算出10个速率来使用它们。我该怎么做呢?

我假设您希望将计算结果连接到一个向量;然后,您可以分配给
Ratek(end+1)
以附加该值

Ratek = []
for t=1:10
  Ratek(end+1) = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
end
(假设实际计算每次给出一个单独的值,而不是静态示例)


作为旁注,如果频繁增加向量和循环,可能会真正影响性能,因此请注意性能影响。

我假设您希望将计算结果连接到向量;然后,您可以分配给
Ratek(end+1)
以附加该值

Ratek = []
for t=1:10
  Ratek(end+1) = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
end
(假设实际计算每次给出一个单独的值,而不是静态示例)


作为旁注,如果频繁增加向量和循环,可能会真正影响性能,因此请注意性能影响。

我假设您希望将计算结果连接到向量;然后,您可以分配给
Ratek(end+1)
以附加该值

Ratek = []
for t=1:10
  Ratek(end+1) = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
end
(假设实际计算每次给出一个单独的值,而不是静态示例)


作为旁注,如果频繁增加向量和循环,可能会真正影响性能,因此请注意性能影响。

我假设您希望将计算结果连接到向量;然后,您可以分配给
Ratek(end+1)
以附加该值

Ratek = []
for t=1:10
  Ratek(end+1) = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
end
(假设实际计算每次给出一个单独的值,而不是静态示例)


作为旁注,如果您经常这样做,不断增长的向量和循环可能真的会损害性能,因此请注意性能影响。

根据@Joachim的答案:

Ratek = []
for t=1:10
    val = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
    if ~Any(Ratek == val)
        Ratek(end+1) = val;
end
如果要将内容设置为字符串:

num2str(Ratek)

我不是很喜欢MATLAB,但这是我的看法。

基于@Joachim的答案,这个怎么样:

Ratek = []
for t=1:10
    val = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
    if ~Any(Ratek == val)
        Ratek(end+1) = val;
end
如果要将内容设置为字符串:

num2str(Ratek)

我不是很喜欢MATLAB,但这是我的看法。

基于@Joachim的答案,这个怎么样:

Ratek = []
for t=1:10
    val = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
    if ~Any(Ratek == val)
        Ratek(end+1) = val;
end
如果要将内容设置为字符串:

num2str(Ratek)

我不是很喜欢MATLAB,但这是我的看法。

基于@Joachim的答案,这个怎么样:

Ratek = []
for t=1:10
    val = (1/2)*(log2(1+SINR1k)+log2(1+SINR2k));
    if ~Any(Ratek == val)
        Ratek(end+1) = val;
end
如果要将内容设置为字符串:

num2str(Ratek)

我不是很喜欢MATLAB,但这是我的看法。

如果你的数据是静态的,你只想重复相同的结果10次,那么

Ratek(1:10) = (1/2)*(log2(1 + SINR1k)+log2(1 + SINR2k));
但是,这没有多大用处,所以我假设
SINR1k
SINR2k
是10x1向量

SINR1k = randi(10,10,1);
SINR2k = randi(10,10,1);
现在,你可以做:

这是一种比从空矩阵开始并向其添加新元素要好得多的方法。但是,在MATLAB中,在这种情况下可以避免循环,因此以下行将给出与上述循环相同的结果:

Ratek = (1/2) * (log2(1 + SINR1k)+log2(1 + SINR2k));
标杆管理: 正如上面的基准测试结果所示,预分配使其速度提高了4倍以上,而矢量化则进一步提高了性能

如果您实际上只想复制结果:

tic
for ii = 1:1000
    Ratek(1:n) = (1/2)*(log2(4)+log2(5));
end
toc
Elapsed time is 0.010811 seconds.

如果您的数据是静态的,并且您只想将相同的结果复制10次,那么

Ratek(1:10) = (1/2)*(log2(1 + SINR1k)+log2(1 + SINR2k));
但是,这没有多大用处,所以我假设
SINR1k
SINR2k
是10x1向量

SINR1k = randi(10,10,1);
SINR2k = randi(10,10,1);
现在,你可以做:

这是一种比从空矩阵开始并向其添加新元素要好得多的方法。但是,在MATLAB中,在这种情况下可以避免循环,因此以下行将给出与上述循环相同的结果:

Ratek = (1/2) * (log2(1 + SINR1k)+log2(1 + SINR2k));
标杆管理: 正如上面的基准测试结果所示,预分配使其速度提高了4倍以上,而矢量化则进一步提高了性能

如果您实际上只想复制结果:

tic
for ii = 1:1000
    Ratek(1:n) = (1/2)*(log2(4)+log2(5));
end
toc
Elapsed time is 0.010811 seconds.

如果您的数据是静态的,并且您只想将相同的结果复制10次,那么

Ratek(1:10) = (1/2)*(log2(1 + SINR1k)+log2(1 + SINR2k));
但是,这没有多大用处,所以我假设
SINR1k
SINR2k
是10x1向量

SINR1k = randi(10,10,1);
SINR2k = randi(10,10,1);
现在,你可以做:

这是一种比从空矩阵开始并向其添加新元素要好得多的方法。但是,在MATLAB中,在这种情况下可以避免循环,因此以下行将给出与上述循环相同的结果:

Ratek = (1/2) * (log2(1 + SINR1k)+log2(1 + SINR2k));
标杆管理: 正如上面的基准测试结果所示,预分配使其速度提高了4倍以上,而矢量化则进一步提高了性能

如果您实际上只想复制结果:

tic
for ii = 1:1000
    Ratek(1:n) = (1/2)*(log2(4)+log2(5));
end
toc
Elapsed time is 0.010811 seconds.

如果您的数据是静态的,并且您只想将相同的结果复制10次,那么

Ratek(1:10) = (1/2)*(log2(1 + SINR1k)+log2(1 + SINR2k));
但是,这没有多大用处,所以我假设
SINR1k
SINR2k
是10x1向量

SINR1k = randi(10,10,1);
SINR2k = randi(10,10,1);
现在,你可以做:

这是一种比从空矩阵开始并向其添加新元素要好得多的方法。但是,在MATLAB中,在这种情况下可以避免循环,因此以下行将给出与上述循环相同的结果:

Ratek = (1/2) * (log2(1 + SINR1k)+log2(1 + SINR2k));
标杆管理: 正如上面的基准测试结果所示,预分配使其速度提高了4倍以上,而矢量化则进一步提高了性能

如果您实际上只想复制结果:

tic
for ii = 1:1000
    Ratek(1:n) = (1/2)*(log2(4)+log2(5));
end
toc
Elapsed time is 0.010811 seconds.

你的循环发生了什么变化?
SINR1k
SINR2k
是标量还是1x10向量?如果没有任何变化,
Ratek(1:10)=(1/2)*(log2(1+SINR1k)+log2(1+SINR2k))将是最简单的。循环中发生了什么变化?
SINR1k
SINR2k
是标量还是1x10向量?如果没有任何变化,
Ratek(1:10)=(1/2)*(log2(1+SINR1k)+log2(1+SINR2k))将是最简单的。循环中发生了什么变化?
SINR1k
SINR2k
是标量还是1x10向量?如果没有任何变化,
Ratek(1:10)=(1/2)*(log2(1+SINR1k)+log2(1+SINR2k))将是最简单的。什么是