在Octave中如何从STDIN(标准输入)读取矩阵?
Octave 从STDIN读取指定尺寸方阵的实现方法
首先明确输入格式要求:
输入第一行为方阵的尺寸n,后续n行每行包含n个用空格分隔的数字,组成n阶方阵,示例输入如下:
3 1 2 3 4 5 6 7 8 9
实现方案
方案1:逐行读取(支持自定义校验)
适合需要对输入合法性做校验的场景,代码如下:
% 读取第一行获取方阵阶数 n = str2double(fgetl(stdin)); mat = []; for i = 1:n % 读取单行内容转换为数字数组 cur_row = str2num(fgetl(stdin)); % 可选:校验行长度是否符合要求 if length(cur_row) ~= n error("第%d行输入元素数量与方阵尺寸不匹配", i); end mat = [mat; cur_row]; end
运行后得到的mat变量就是读取到的n阶方阵。
方案2:极简写法(无需循环)
如果不需要自定义校验逻辑,可以直接用Octave内置的dlmread函数一行完成读取:
% 参数说明:第二个参数为分隔符,第三个参数是跳过的行数(跳过第一行的尺寸值),第四个参数是跳过的列数 mat = dlmread(stdin, ' ', 1, 0);
内容的提问来源于stack exchange,提问作者JISHNU N
相关产品推荐
相关产品推荐

