在matlab中,如何连接在for循环中计算的值?
在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) = (
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))代码>将是最简单的。什么是