我必须创建一个以向量作为输入的函数v
和三个标量a
, b
and c
。该函数替换了的每个元素v
等于a
有一个二元素数组[b,c]
.
例如,给定v = [1,2,3,4]
and 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
.
硅片提到的阵列改变尺寸的问题在这里通过将部分阵列中间保持在单元阵列的单元中来解决。转换回数组会将这些部分连接起来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)