首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matlab:一步实现转置向量?

Matlab:一步实现转置向量?
EN

Stack Overflow用户
提问于 2013-03-23 14:22:21
回答 2查看 465关注 0票数 0

我想同时使用(:)运算符和转置。这个是可能的吗?基本上,我想做一些像这样的事情

代码语言:javascript
运行
AI代码解释
复制
output = A'(:)

但这并不起作用。有谁知道解决办法吗?

谢谢!

免疫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-23 14:36:24

本例中的:运算符是将矩阵重塑为向量的简写形式。您可以通过显式使用reshape函数来解决运算符使用位置的限制:

代码语言:javascript
运行
AI代码解释
复制
octave>  A = [1 2;3 4]
A =

   1   2
   3   4

octave> B=A'
B =

   1   3
   2   4

octave> C=B(:)
C =

   1
   2
   3
   4

octave> D=reshape(A',[],1) #% vectorize transpose in one line
D =

   1
   2
   3
   4
票数 3
EN

Stack Overflow用户

发布于 2013-03-23 14:40:47

尝试使用:

代码语言:javascript
运行
AI代码解释
复制
output = reshape( A.', numel(A), 1);

>> A = rand(4,3);
>> output = reshape( A.', numel(A), 1);

A = 

    0.447213   0.046896   0.679087
    0.903294   0.768745   0.651481
    0.701071   0.122534   0.611390
    0.535844   0.478595   0.772810

output =

    0.447213
    0.046896
    0.679087
    0.903294
    0.768745
    0.651481
    0.701071
    0.122534
    0.611390
    0.535844
    0.478595
    0.772810

请注意,重塑读取沿列访问的矩阵,因此您可能不需要转置矩阵A。

另外,请记住,运算符'是厄米特运算符,即转置的共轭运算符,而.'只是转置,您也可以通过转置(A)获得转置。

您可能希望在一行中完成所有操作,而不必每次都重复键入所有内容。一种解决方案是创建一个函数句柄作为boop:

代码语言:javascript
运行
AI代码解释
复制
>> boop = @(x) reshape( transpose(x), numel(x), 1)
>> output = boop(A)

output =

    0.447213
    0.046896
    0.679087
    0.903294
    0.768745
    0.651481
    0.701071
    0.122534
    0.611390
    0.535844
    0.478595
    0.772810
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15587816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档