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的一个非常旧的版本,不推荐使用该函数。我建议你升级一下。