function Button_10Pushed(comp, event) n=[1:1000]; num= comp.TextArea.Value; l=length(comp.TextArea.Value); comp.TextArea.Value=strrep(num,num,num(1:l-1)); %去掉末尾号码在面板上的显示 d11=sin(0.7217n)+sin(0.9273n); global NUM L=length(NUM); NUM=NUM(1:L-1100); %删除末尾号码在拨号音信号中的存储 sound(d11,8192); 显示错误matlab.ui.control.TextArea/convertTextToStorableCellArray 索引超过数组元素的数量。索引不能超过 0。该怎么更改,写出更改代码
时间: 2023-12-14 22:36:25 浏览: 113
根据错误提示,问题出在comp.TextArea.Value的赋值上面。这个值的类型应该是一个cell数组,而不是一个字符串。所以需要将字符串转换成cell数组。可以使用下面的代码替换原来的一行:
```
comp.TextArea.Value = cellstr(strrep(num,num,num(1:l-1)));
```
另外,代码中出现了全局变量NUM,应该尽量避免使用全局变量。可以将其改为函数的输入和输出参数。
```
function [NUM, d11] = Button_10Pushed(comp, event)
n=[1:1000];
num= comp.TextArea.Value;
l=length(comp.TextArea.Value);
comp.TextArea.Value = cellstr(strrep(num,num,num(1:l-1))); %去掉末尾号码在面板上的显示
d11=sin(0.7217n)+sin(0.9273n);
L=length(NUM);
NUM=NUM(1:L-1100); %删除末尾号码在拨号音信号中的存储
sound(d11,8192);
```
相关问题
function Button_10Pushed(comp, event) n=[1:1000]; % num=get(comp.TextArea.Value,'string'); num= comp.TextArea.Value; l=length(comp.TextArea.Value); comp.TextArea.Value=strrep(num,num,num(1:l-1)); %去掉末尾号码在面板上的显示 d11=sin(0.7217n)+sin(0.9273n); %set(comp.TextArea.Value,'string',n11); global NUM L=length(NUM); NUM=NUM(1:L-1100); %删除末尾号码在拨号音信号中的存储 sound(d11,8192); 显示错误matlab.ui.control.TextArea/convertTextToStorableCellArray 索引超过数组元素的数量。索引不能超过 0。该怎么更改,写出更改代码
在这段代码中,出现了一个错误,是因为 `comp.TextArea.Value` 返回的是一个字符串,而不是一个 cell 数组。因此,我们需要将字符串转换为一个 cell 数组,然后使用索引来访问其中的元素。以下是更改后的代码:
```matlab
function Button_10Pushed(comp, event)
n = 1:1000;
num = comp.TextArea.Value;
l = length(num);
comp.TextArea.Value = strrep(num, num, num(1:l-1)); %去掉末尾号码在面板上的显示
d11 = sin(0.7217*n) + sin(0.9273*n);
global NUM
L = length(NUM);
NUM = NUM(1:L-1100); %删除末尾号码在拨号音信号中的存储
sound(d11, 8192);
```
请注意,这里我们没有使用 `get(comp.TextArea.Value,'string')` 来获取文本框中的字符串,而是直接使用 `comp.TextArea.Value`。同时,在对 `NUM` 进行操作时,也需要注意其是否已经被定义和初始化。
% Button pushed function: Button_7 function Button_7Pushed(app, event) z1=num2str(app.mEditField2.Value); z2=num2str(app.mEditField3.Value); z3=num2str(app.mEditField4.Value); z4=num2str(app.mEditField5.Value); z5=num2str(app.mEditField6.Value); z6=num2str(app.mEditField7.Value); z=z1+z2+z3+z4+z5+z6; lambda=num2str(app.nmEditField1.Value); k=2*pi/lambda; end
根据你提供的代码,这是一个MATLAB App Designer中按钮的回调函数,用于获取多个可编辑文本框的值,并将它们进行计算。
在这个回调函数中,首先使用`num2str`函数将每个可编辑文本框的值转换为字符串类型,然后将它们拼接起来,得到一个长字符串`z`。需要注意的是,这里使用的是加号运算符,但是在MATLAB中,加号运算符不能直接用于字符串相加,而是用于数值相加。因此,你需要将每个字符串转换为数值类型,然后再进行相加。可以使用`str2num`函数将字符串转换为数值类型。
接下来,从另一个可编辑文本框中获取λ的值,并将其转换为字符串类型,并使用`pi`常数计算k的值。
需要注意的是,这个回调函数中并没有进行任何操作(比如将结果写入文件或者显示在UI Figure上)。如果你想要进行一些操作,需要在这个函数中添加相应的代码。
阅读全文