matlab - 函数定义矩阵的 reshape

标签 matlab reshape

我在matlab中有如下代码

deltax=@(t)xt(t).'-xt(t);
deltay=@(t)yt(t).'-yt(t);
deltaz=@(t)zt(t).'-zt(t);

deltar=@(t)reshape([deltax(:) deltay(:) deltaz(:)].',3*(100+1),[]).';

其中 xtytzt 都是 t 的定义良好的函数。如果我执行 deltax(2),我会得到一个包含 101 个条目的列数组,deltay(2) 和 deltaz(2) 也是如此。

但是当我调用

deltar(2)

我收到这个错误

Input arguments to function include colon operator. To input the colon character, use ':' instead.

我也试过

deltar=@(t)reshape([deltax(t)(:) deltay(t)(:) deltaz(t)(:)].',3*(100+1),[]).';

但这给了我语法错误。

我一定是犯了一些基本的 matlab 错误。

最佳答案

如果 deltax(t) 返回一个您希望重新整形为列的矩阵,则不能使用 colon operator 来完成由于有两组紧接在一起的括号(MATLAB 中的语法错误;可以找到更多信息 here )。你必须调用reshape在每个 delta(x|y|z) 上分别返回值:

deltar = @(t) reshape([reshape(deltax(t), [], 1) ...
                       reshape(deltay(t), [], 1) ...
                       reshape(deltaz(t), [], 1)].', 3*(100+1), []).';

或者,您可以使用 cat 实现相同的数据 reshape 。和 permute像这样:

deltar = @(t) reshape(permute(cat(3, deltax(t), deltay(t), deltaz(t)), [3 1 2]), ...
                      3*(100+1), []).';

如果每个 delta(x|y|z) 总是返回一个 101×M 的矩阵,一个更简单的解决方案是:

deltar = @(t) reshape([deltax(t).'; deltay(t).'; deltaz(t).'], [], 3*(100+1));

关于matlab - 函数定义矩阵的 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557404/

相关文章:

matlab - 左矩阵除以向量

java - 如何从 MATLAB 代码捕获 java 异常

matlab - 如何绘制传递函数数组的波特图?

python - 如何防止索引旋转?

r - R 中的数据透视表不均匀(长度列)

matlab - 有没有办法颠倒matlab中的位顺序

matlab - 交互 MATLAB - 使用脚本的 ANSYS

R - 对列表中的每个数据框执行融合

matlab如何将图像旋转90度?

r - ggplot2 和 reshape2