【问题标题】:How to represent an array of numbers as characters如何将数字数组表示为字符
【发布时间】:2012-01-17 23:49:19
【问题描述】:

我有一个正弦波,它是小波阈值(比如软阈值)。如何编程,以便使用离散小波变换对信号进行变换,然后使用字母字符而不是数字来在这个新的基础上显示信号的系数。

例如:$a=(\text{coeff}_1,\text{coeff}_2,...,\text{coeff}_9)$, $b=(\text{coeff}_{10},...,\text{coeff}_{19})$,等等。现在,根据单个字符要表示多少个数字,可以形成一个规则,比如如果字母的数量是 8 并且信号的长度是 1000,那么如何为分配指定滑动窗口字符数?$a$ 系数的实例可能不止一个;它们不是唯一的数字。这类似于压缩技术。字母的字符可以通过马尔可夫方法分配。

【问题讨论】:

  • 总是,一个被赞成的问题...nvr 一个答案!我应该试试我的测验!

标签: matlab


【解决方案1】:

让我们看看我是否有你的问题。您有一个带有数字的数组,并且您希望 matlab 使用这种奇怪的语法将其显示为字母。尝试类似:

a=[];
for i=1:length(sinewave)
   a=[a sprintf('%c',sinewave(i))]; % dont remember if %c is to char, see sprintf help, but if it doesnt works use %s 
end

a=reshape(a,[length(a) 10]); % just because you wanted to show 10 letters per row

无论如何,这只是一个线索,试图帮助你。祝你好运!

【讨论】:

  • 感谢您期待已久的回复。您说的很对,但问题是数字并不总是整数和唯一的。所以,问题是如何用相同的符号/字符来组合/表示相似的数字。
  • 相似数字是什么意思?
  • 好吧,小波系数或数组 a 的元素可能不是唯一的,我猜一个数字可以重复自己。所以,应该对一个字符下的这些数字进行线性搜索。在您的代码中,我们不需要提及要使用哪些字符吗?还是默认使用 ASCII?如何在不转换为 ASCII 并从预定义字符集指定的情况下继续操作。
  • 它将使用 ascii,因为 sprintf 可能会在其中调用一些标准 C 函数,或类似的东西。但是如果你想映射它,如果你知道你的数组的行为就可以了。您可以使用一些示例来检查数字的行为方式,而不是思考如何将它们映射成字母。
  • 谢谢,您能否在不使用 ascii 的情况下附加您的答案如何映射到预定义的字母集?
猜你喜欢
  • 1970-01-01
  • 2021-01-12
  • 2012-02-18
  • 2013-02-11
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2012-11-05
  • 2022-01-24
相关资源
最近更新 更多