matlab - 我应该如何更改我的“文本和数字字符串到摩尔斯电码”转换器的代码以使代码能够运行?
问题描述
嗨,我有一个问题,我应该在 MATLAB 中创建一个 GUI,它将字母和数字转换为摩尔斯电码,但我的代码无法运行,上面附加的图像链接是用于按钮回调的。它还说红色下划线的“莫尔斯”需要预先分配速度,因为它在每次循环迭代时都会改变大小。我应该如何处理这个?谢谢..
另外,我应该在我的 edit1 和 edit2 回调下包含任何内容吗?因为edit1只是输入数字和字母,edit2只是输出莫尔斯电码。再次感谢! edit1 & edit2 回调
解决方案
- “莫尔斯”每次循环迭代都会改变大小。首先,让我们定义2个变量。
Morse_1 = [];
Morse_2 = zeros(1,100);
(我冒昧地定义矩阵而不是字符串,但这更容易解释这个概念)。您基本上是在说这Morse_1
是一个可以填充的空白变量,同时Morse_2
具有固定的尺寸。空白变量的尺寸Morse_1
(如果我没有使用正确的名称,请原谅我,但我认为空白变量很好地解释了它)是灵活的。这意味着做
Morse_1(1,101) = 1
将起作用(Morse_1
将是一个 101 维向量,在第 101 个位置有 100 个零和 1)。正在做
Morse_2(1,101) = 1
也可以,但是如果您在很大程度上高估了尺寸(例如 zeros(1,1000) 但您的消息实际上只达到几百个),您最终可能会得到太多未使用的元素。
在您的情况下,我会使用一个空白变量,因为您事先并不知道您的编码消息将持续多长时间(即使您知道原始字符串中的字符数,编码消息也会是 5 次如果都是 '9' 比所有 'e' 长)。这个警告在处理 1000x1000 矩阵时非常有用,但对于处理字符串我会忽略它。
总而言之,如果您不知道它会得到多长时间,或者您的代码无法处理可变长度,或者您不想担心确切计算多少元素是必需的。另一方面,如果您的代码需要正确尺寸的数组,或者您正在使用非常大的数组,我会使用固定尺寸。但是,在很多情况下,您真的不会注意到速度差异(填充空白数组可能需要 0.01 秒,而填充固定维度可能需要 0.001 秒。除非您这样做一千次(为什么? ?),它实际上是不明显的)。
- 就个人而言,我会改变这个循环的工作方式,
strrep()
如下所示:
for i=1:length(alphabet) %alphabet = 26 letters+10 numbers+space, 37 characters in total
original_message = strrep(original_message,alphabet{i},morse_alphabet{i});
end
strrep(a,b,c)
找到b
里面的子字符串a
并将其替换为c
. 在您的情况下, alphabet 与 dictionary 相同chars
, morse_alphabet 与 dictionary 相同code
。
至于回调,我真的不知道,所以我不能帮你。
推荐阅读
- python - 脚本的 ModuleNotFoundError,仅在从 CMD 提示符运行时,但在从 anaconda 提示符运行时不会
- google-apps-script - 我如何确保在验证过程后发送的电子邮件被传递到正确的行
- reactjs - 从 Formik 组件中的上下文调用函数将导致警告
- c++ - 重载 bool 转换和取消引用对象指针
- javascript - 如何计算给定数组中每个字符串的出现次数
- android - 参数类型'列表
'不能分配给参数类型'String' - android - 如何在所有幻灯片中将标题、文本和点指示符的位置更改为左下角
- javascript - 数据库模块在 server.js 中不起作用
- c# - 编译时类型在运行时是否仍然存在?
- typescript - 使用带有泛型的 Typescript 在 Redux-Saga 中键入生成器函数