首页 > 解决方案 > 我应该如何更改我的“文本和数字字符串到摩尔斯电码”转换器的代码以使代码能够运行?

问题描述

按钮回调以转换为摩尔斯

嗨,我有一个问题,我应该在 MATLAB 中创建一个 GUI,它将字母和数字转换为摩尔斯电码,但我的代码无法运行,上面附加的图像链接是用于按钮回调的。它还说红色下划线的“莫尔斯”需要预先分配速度,因为它在每次循环迭代时都会改变大小。我应该如何处理这个?谢谢..

另外,我应该在我的 edit1 和 edit2 回调下包含任何内容吗?因为edit1只是输入数字和字母,edit2只是输出莫尔斯电码。再次感谢! edit1 & edit2 回调

标签: matlabuser-interfacemorse-code

解决方案


  1. “莫尔斯”每次循环迭代都会改变大小。首先,让我们定义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 秒。除非您这样做一千次(为什么? ?),它实际上是不明显的)。

  1. 就个人而言,我会改变这个循环的工作方式,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

至于回调,我真的不知道,所以我不能帮你。


推荐阅读