Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >向向量中添加元素?

向向量中添加元素?
EN

Stack Overflow用户
提问于 2012-11-16 04:40:44
回答 3查看 124关注 0票数 0

我正在将MatLab中的一个函数转换为C++,并看到(在matlab中):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  f = blocks(min:max,1:len);

值:min = 153,max = 205

这是一个二维矢量。那么,上面的代码行是否创建了一个新的2D向量,并将“块”中的所有块复制到新的向量中?

所以本质上,它本质上是一个循环,从153开始,以250结尾,然后将每个块复制到新的向量中?

希望有人能帮忙!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-16 04:52:51

该语句接受minmax之间的行,以及来自blocks矩阵的1len之间的列,并将它们分配给f

让我们试试看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
M = magic(5) % gives

M =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

M2 = M(2:4,1:3) % rows 2 to 4, columns 1 to 3

M2 =

    23     5     7
     4     6    13
    10    12    19

我不太了解C++,但是您可能需要2个for循环才能做到这一点。

票数 3
EN

Stack Overflow用户

发布于 2012-11-16 04:48:53

如果blocks是一个2d矩阵,则该代码提取它的一个子矩阵并将其分配给变量f。提取的子矩阵是行min到行max,列1到列len

要获得更多信息,请阅读

如果您想在一个循环中这样做(在matlab中不是那么有效,但我不知道如何在C++中解决这个问题),它与以下内容相同:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f = NaN(max-min+1,len); % allocate memory for f
for rowi=1:(max-(min-1))
    f(rowi,:) =  blocks(rowi + min-1, 1:len);
end
票数 2
EN

Stack Overflow用户

发布于 2012-11-16 05:14:51

这一行代码将blocks元素153、1和205之间的子矩阵元素复制到新创建的矩阵f中。在C中移植的内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int f[max-min+1][len]; // or float or whatever
for(int ii=0; ii<=max-min; ii++)
    for(int jj=0; jj<len; jj++)
        f[ii][jj] = blocks[ii+min][jj];

我现在假设min和max包含从0开始计数的索引(即152和204),而不是像matlab中所做的那样1。

更新:,否则,会有更多的性能(因为它只是一个复制while行的单个for循环)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(ii=0; ii<=max-min; ii++)
    memcpy( &f2[ii][0], &blocks[min+ii][0], sizeof(int)*(len) );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13416780

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文