arrays - 在 MATLAB 中用两个值替换向量值

标签 arrays matlab vector indexing assignment-operator

我必须创建一个将向量 v 作为输入的函数和三个标量 a , bc .该函数替换 v 的每个元素等于 a使用二元数组 [b,c] .

例如,给定 v = [1,2,3,4]a = 2, b = 5, c = 5 ,输出将是:

out = [1,5,5,3,4]

我的第一次尝试是尝试这个:

v = [1,2,3,4];
v(2) = [5,5];

但是,我得到一个错误,所以我不明白如何将两个值放在向量中的一个位置,即将所有以下值向右移动一个位置,以便新的两个值适合向量因此,向量的大小将增加一。另外,如果a有多个值存在于 v ,我不确定如何一次全部替换它们。

我如何在 MATLAB 中执行此操作?

最佳答案

这是一个使用元胞数组的解决方案:

% remember the indices where a occurs
ind = (v == a);
% split array such that each element of a cell array contains one element
v = mat2cell(v, 1, ones(1, numel(v)));
% replace appropriate cells with two-element array
v(ind) = {[b c]};
% concatenate
v = cell2mat(v);

和rayryeng的解决方案一样,它可以替换多次出现的a

siliconwafer 提到的阵列改变大小的问题,在这里通过将部分阵列中间保留在单元阵列的单元中来解决。转换回数组会合并这些部分。

关于arrays - 在 MATLAB 中用两个值替换向量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29991322/

相关文章:

javascript - 在 JavaScript 中优化迭代深化高峰时间算法时遇到问题

c - 在 C 中填充数组

c++ - "typedef iterator<const value_type> const_iterator;"结果为 : "error: expected member name or ' ; ' after declaration specifiers"

java - 如何在 Java 中使用 Scanner 将输入值存储在数组中

matlab - readtable - 在 Matlab 中将所有列作为文本读取

matlab - 基于一系列多输入多输出模型 (MIMO) 创建不确定模型

matlab - 如何在 MATLAB 中为 ax+by-c 画一条线?

java - 从 servlet 返回 vector

c++ - 如何遍历 map vector 中的 map ?

arrays - 在两个数组中找到方程的解