如何用MATLAB的repmat函数生成指定的cell向量?
嘿,我来帮你搞定这个MATLAB的问题~
最直接的解决方案
其实你想要的sysHealthy={'sys';'sys';'sys';'sys';'sys'}这个列向量,完全不用绕弯子,直接调整repmat的维度参数就能一步到位:
sysHealthy = repmat({'sys'}, 5, 1);
运行这段代码后,你就能得到完美符合要求的5行1列细胞数组,每个元素都是独立的'sys'字符串。
为什么你的原代码会出问题?
咱们来拆解下你原来代码的两个问题:
- 维度搞反了:你用
repmat({'sys'},1,5)生成的是1行5列的细胞数组,而你需要的是列向量,应该把维度参数改成5,1; - 逻辑方向错了:
sprintf('%3s;',A{:})是把所有元素拼接成单个字符串,这和你想要的“每个元素都是独立的'sys'”完全不是一回事,所以才会出现末尾多一个分号、且没有单引号的问题(毕竟单引号是细胞数组元素的标识,拼接成单个字符串后自然不会保留)。
(可选)如果非要用字符串拼接的方式修正
虽然没必要,但如果你想试试用字符串拼接的思路来实现,可以参考这段代码:
% 先生成5行的字符矩阵 A = repmat('sys', 5, 1); % 给每个"sys"加上单引号和分号 str = strcat('''', A, ''';'); % 去掉最后一个多余的分号 str(end) = []; % 拆分字符串为细胞数组,再转成列向量 sysHealthy = strsplit(str, ';')';
不过显然第一种方法更简洁高效,推荐直接用~
内容的提问来源于stack exchange,提问作者Juliette
相关产品推荐
相关产品推荐

