You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:53:51