我应该如何更改我的“文本和数字字符串到莫尔斯电码”转换器的代码以便代码能够运行?

问题描述

push button callback to convert to Morse

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

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

解决方法

  1. “Morse”每次循环迭代都会改变大小。首先,让我们定义 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

也可以使用,但如果您大大高估了维度(​​例如,零 (1,1000) 但您的消息实际上只有几百个),您最终可能会得到太多未使用的元素。

在您的情况下,我将使用一个空白变量,因为您事先并不真正知道您的编码信息将持续多长时间(即使您知道原始字符串中的字符数,编码信息也会如果全部为 '9,则比全部为 'e 的时间长 5 倍)。这个警告在处理 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。在您的情况下,字母表与字典 chars 相同,而 morse_alphabet 与字典 code 相同。

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