如何在MATLAB中使用for循环将多个命名向量合并为新矩阵
MATLAB循环合并向量报错修复方案
报错根因
end运算符只能用于已经完成初始化的数组索引场景,你的new_database在循环时还未创建,没有确定的维度,1:end无法被正确解析namelist{i}取到的是字符串格式的变量名,不是变量存储的数值向量,直接赋值会出现类型不匹配问题
适配你现有代码的修复版
namelist = ["First","B","New"]; First = 1:100; B = 1:2:200; New = 4:4:400; % 提前初始化矩阵,固定维度避免end报错,同时提升运行效率 row_count = length(namelist); col_count = length(eval(namelist(1))); new_database = zeros(row_count, col_count); for i = 1:row_count % 将字符串变量名转为实际的向量值,赋值到矩阵对应行 new_database(i,:) = eval(namelist(i)); end
更推荐的规范实现
如果可以调整变量存储方式,建议提前把所有向量存入元胞数组,避免使用安全性和运行效率都较差的eval:
% 所有待合并向量存入元胞数组 vec_list = {1:100, 1:2:200, 4:4:400}; row_count = length(vec_list); col_count = length(vec_list{1}); new_database = zeros(row_count, col_count); for i = 1:row_count new_database(i,:) = vec_list{i}; end
内容的提问来源于stack exchange,提问作者Mert Doğan
相关产品推荐
相关产品推荐

