octave - 如何在 Octave 中从 STDIN 读取矩阵
问题描述
这就是输入的样子。输入的第一行是方阵大小。
3
1 2 3
4 5 6
7 8 9
解决方案
这是一种方法。还有很多其他的。
DataStr = fileread( 'data.txt' ) # read in whole file
StrTokens = strsplit( DataStr ) # split into string tokens
Tokens = cellfun( @str2double, StrTokens ) # convert string tokens to numerical
NumRows = Tokens(1) # First token gives number of rows
NumElems = NumRows ^ 2 # Total number of elements in matrix
Elems = Tokens(2 : 1 + NumElems) # select appropriate elements from tokens
Matrix = reshape( Elems, [NumRows, NumRows] ) # reshape into square matrix
这从文件中读取。如果您想将输入作为 octave 脚本“管道”输入,则可以将第一行替换为以下内容:
DataStr = fread( stdin, 'char' )
DataStr = char( DataStr.' )
这意味着您可以从 linux 终端调用它,如下所示:
echo -e "3\n1 2 3\n2 3 4\n3 4 5" | octave myscript.m
推荐阅读
- mysql - 如何将其他表中的值插入一行?
- java - 如何从另一个 Activity 更改值 ListPreference
- c - 浮点和圆形的可读性cs50问题
- php - 尝试使用 Alamofire 访问从 Stripe API 返回的数据,但结果不是有效的 JSON
- javascript - 如何从 Javascript 中的 Combobox 中删除重复项?
- python - 用 pandas 识别重复行并将这些行转换为一行,从而创建一个新列
- node.js - 使用 import { } from ' ' 导入模块时出错
- django - DJANGO_SETTINGS_MODULE 或在访问设置之前调用 settings.configure()
- python - Docker 不复制资产文件夹
- c# - 我正在使用 Windows 窗体和 C# 进行测验,但它一直显示相同的问题