Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 倍频程-将数字拆分为矩阵_Matrix_Octave - Fatal编程技术网

Matrix 倍频程-将数字拆分为矩阵

Matrix 倍频程-将数字拆分为矩阵,matrix,octave,Matrix,Octave,用八度音阶,我想拿一个数字为例 x = 14 并将其拆分为如下矩阵 m = [1, 4] 到目前为止,我已经尝试将数字转换为字符串,然后使用str2mat函数,但没有结果 另一个例子是 x = 23445 转化为 m = [2, 3, 4, 4, 5] 提前感谢您的帮助。未测试,但想法是:尝试将数字x=23445除以10,然后取小数部分 例如,迭代: x = 23445; t = 23445/10; # t is 2344,5 r = floor(t); # r is 2

用八度音阶,我想拿一个数字为例

x = 14
并将其拆分为如下矩阵

m = [1, 4]
到目前为止,我已经尝试将数字转换为字符串,然后使用str2mat函数,但没有结果

另一个例子是

x = 23445
转化为

m = [2, 3, 4, 4, 5]

提前感谢您的帮助。

未测试,但想法是:尝试将数字
x=23445
除以10,然后取小数部分

例如,迭代:

x = 23445;
t = 23445/10;     # t is 2344,5
r = floor(t);     # r is 2344
d = x - r * 10    # d is 5 = 23445 - 2344 * 10
d
的值为5(最后一位为
x
,将其添加到数组中)<代码>r的值为2344。所以现在:

x = r;            # so x = 2344;
t = 2344/10;      # t is 234,4
r = floor(t);     # r is 234
d = x - r * 10    # d is 4 = 2344 - 234 * 10
d
的值为4<代码>r的值为234。
然后迭代直到
r=0

未测试,但想法是:尝试将数字
x=23445
除以10,并取小数部分

x = 14;
sprintf('%d',x) - '0'
>> 1 4
例如,迭代:

x = 23445;
t = 23445/10;     # t is 2344,5
r = floor(t);     # r is 2344
d = x - r * 10    # d is 5 = 23445 - 2344 * 10
d
的值为5(最后一位为
x
,将其添加到数组中)<代码>r的值为2344。所以现在:

x = r;            # so x = 2344;
t = 2344/10;      # t is 234,4
r = floor(t);     # r is 234
d = x - r * 10    # d is 4 = 2344 - 234 * 10
d
的值为4<代码>r的值为234。
如果您想通过字符串操作执行此操作,请迭代到
r=0

,前提是没有小数部分,这是一种方法:

x = 14;
sprintf('%d',x) - '0'
>> 1 4
octave> x = 23445    
x = 23445
octave> s = int2str (x)
s = 23445
octave> m = arrayfun (@(x) str2double (s(x)), 1:numel(s))
m =

   2   3   4   4   5

如果您想通过字符串操作来实现这一点,只要没有小数部分,就可以这样做:

octave> x = 23445    
x = 23445
octave> s = int2str (x)
s = 23445
octave> m = arrayfun (@(x) str2double (s(x)), 1:numel(s))
m =

   2   3   4   4   5

谢谢,有趣的方法,我来试试。另一种方法是将数字转换为字符串
num2str
,然后迭代字符串中的字符。我不知道是否可以用八度音阶来做…谢谢,有趣的方法,我会尝试一下。另一种方法是将数字转换为字符串
num2str
,然后迭代字符串中的字符。不知道是否可以用八度音阶来实现……您提到尝试使用str2mat函数。Octave 3.2.0已经是Octave的一个非常旧的版本,不推荐使用该函数。我建议您升级它。您提到尝试使用str2mat功能。Octave 3.2.0已经是Octave的一个非常旧的版本,不推荐使用该函数。我建议你升级一下。