matlab - 索引到向量

标签 matlab

谁能解释一下为什么示例 A 中的结果是 1x6 向量(这是有道理的,也是我所期望的)而示例 B 中的结果是 1x4 向量?

在示例 B 中,如果我将 newvec 的大小预定义为 1x6 向量,则结果是正确的 1x6 向量。只是不明白发生了什么。

示例 A

vec = [0 2 3 0 5 0]     %1x6
newvec(vec == 0) = 1    %produces a 1 x 6 vector

示例 B

vec = [0 2 3 0 5 3]     %1 x 6
newvec(vec == 0) = 1    %produces a 1 x 4 vector

最佳答案

如果在您调用第二行时 newvec 不存在,MATLAB 只会将其变大以容纳您设置为 1 的索引。

你实际上在做的是:

newvec([1 4 6]) = 1;

newvec([1 4]) = 1;

类似地,如果 vec 实际上是一个 2D/3D 等矩阵,newvec 将以 1 x N 的形式出现,其中 N 是任意的最高索引号,不保留原矩阵的形状。

因此,在这些情况下,您需要:

1) 首先将newvec预分配为vec的大小。

2) 改为执行 newvec = (vec==0)

关于matlab - 索引到向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24203618/

相关文章:

c++ - 从 matlab 中的二进制文件读取 float 不正确

matlab - Matlab 中的噪声消除

matlab - 理解 Matlab 多维数组

matlab - 使用参数值输入对的缩写 - 为什么 cellfun 的 `' UniformOutput', false` 工作为 `' un', 0`?

c - 多线程(pthreads)MATLAB mex函数导致MATLAB退出后崩溃

matlab - 两个信号的互相关

matlab - 将一维高斯插值到二维高斯

matlab - 计算二维矩阵的相同行

matlab - 检测矩阵中的非均匀方向

java - 从java调用matlab函数