Matlab 矩形空矩阵赋值不当,如何解决此错误
我试图通过RS232将basys 2的二进制数据样本通过COM4电缆发送到matlab,但matlab给出了“矩形空矩阵的不正确分配”错误。 这是我的MATLAB代码Matlab 矩形空矩阵赋值不当,如何解决此错误,matlab,Matlab,我试图通过RS232将basys 2的二进制数据样本通过COM4电缆发送到matlab,但matlab给出了“矩形空矩阵的不正确分配”错误。 这是我的MATLAB代码 clc;clear all; close all; delete(instrfind); %% SERIAL PORT COMMUNICATION (RS-232 Interface) %% Parameters s = serial('COM4'); % Modify COM4 according to your COM por
clc;clear all; close all; delete(instrfind);
%% SERIAL PORT COMMUNICATION (RS-232 Interface)
%% Parameters
s = serial('COM4'); % Modify COM4 according to your COM port
set(s,'BaudRate',115200); %DO NOT MODIFY (FIXED BAUDRATE)
set(s,'InputBufferSize',2^10); % 1024 byte (you don't have to modify)
set(s,'OutputBufferSize',2^10); % 1024 byte (you don't have to modify)
get(s) % Properties of your serial port
%index parameters
k=1;
nofElem=21; %Number of receive samples (21 for test samples) MODIFY FOR DATA samples
decdata=zeros(1,nofElem); % integer data
%% Read From Serial Port
fopen(s);
while (1)
decdata(k) = fread(s,1);
k=k+1;
if k == nofElem
break; % break the inf loop
end
end
fclose(s);
plot(decdata)
尝试将代码更改为以下内容。 我只是添加了一个检查,以查看是否从串行端口读取了内容,并查看未读取内容的原因
fopen(s);
while (k<nofElem)
tic
aux=fread(s,1);
t=toc;
if(isempty(aux))
if t>=get(s,'Timeout')
error('Timeout. Waited for too long')
else
error('Nothing read from serial port and I dont know why');
end
end
decdata(k) = aux;
k=k+1;
end
fopen;
while(k=get(s,'Timeout'))
错误('超时。等待的时间太长')
其他的
错误(“没有从串行端口读取任何内容,我不知道原因”);
结束
结束
decdata(k)=aux;
k=k+1;
结束
尝试将代码更改为以下内容。
我只是添加了一个检查,以查看是否从串行端口读取了内容,并查看未读取内容的原因
fopen(s);
while (k<nofElem)
tic
aux=fread(s,1);
t=toc;
if(isempty(aux))
if t>=get(s,'Timeout')
error('Timeout. Waited for too long')
else
error('Nothing read from serial port and I dont know why');
end
end
decdata(k) = aux;
k=k+1;
end
fopen;
while(k=get(s,'Timeout'))
错误('超时。等待的时间太长')
其他的
错误(“没有从串行端口读取任何内容,我不知道原因”);
结束
结束
decdata(k)=aux;
k=k+1;
结束
尝试将代码更改为以下内容。
我只是添加了一个检查,以查看是否从串行端口读取了内容,并查看未读取内容的原因
fopen(s);
while (k<nofElem)
tic
aux=fread(s,1);
t=toc;
if(isempty(aux))
if t>=get(s,'Timeout')
error('Timeout. Waited for too long')
else
error('Nothing read from serial port and I dont know why');
end
end
decdata(k) = aux;
k=k+1;
end
fopen;
while(k=get(s,'Timeout'))
错误('超时。等待的时间太长')
其他的
错误(“没有从串行端口读取任何内容,我不知道原因”);
结束
结束
decdata(k)=aux;
k=k+1;
结束
尝试将代码更改为以下内容。
我只是添加了一个检查,以查看是否从串行端口读取了内容,并查看未读取内容的原因
fopen(s);
while (k<nofElem)
tic
aux=fread(s,1);
t=toc;
if(isempty(aux))
if t>=get(s,'Timeout')
error('Timeout. Waited for too long')
else
error('Nothing read from serial port and I dont know why');
end
end
decdata(k) = aux;
k=k+1;
end
fopen;
while(k=get(s,'Timeout'))
错误('超时。等待的时间太长')
其他的
错误(“没有从串行端口读取任何内容,我不知道原因”);
结束
结束
decdata(k)=aux;
k=k+1;
结束
哪一行给出了这个错误?decdata(k)=fread(s,1)我认为这个错误可能是重复的,因为fread
用于读取二进制文件。您可能正在查找fscanf
。Read:我正在串行发送二进制数,fscanf不起作用。哪一行给出了这个错误?decdata(k)=fread(s,1)可能重复此错误是因为fread
用于读取二进制文件。您可能正在查找fscanf
。读取:我以串行方式发送二进制数,fscanf不起作用。哪一行出现此错误?decdata(k)=fread(s,1)可能重复此错误是因为fread
用于读取二进制文件。您可能正在查找fscanf
。读取:我以串行方式发送二进制数,fscanf不起作用。哪一行出现此错误?decdata(k)=fread(s,1)我相信这个错误可能是重复的,因为fread
是用来读取二进制文件的。你可能正在寻找fscanf
。Read:我是串行发送二进制数的,fscanf不起作用。当然而k~=nofElem
?@Dan是的,我认为更好,但这仍然有效,并且对操作代码的干扰更少。我会的可能使用k
。如果以某种方式(神奇地)k
变得比nofElem
大,这将停止循环-k~=nofElem
不会。或者有任何理由反对使用@hbaders吗?我不知道是否有!我肯定在使用当然而k~=nofElem
?@Dan是的,我认为更好,但这仍然有效,而且与OP-code相比,我没有那么麻烦我可能会使用k
。如果有什么(神奇的)k
变得比nofElem
大,这将停止循环-k~=nofElem
不会。或者有任何理由反对使用@hbaders吗?我不知道是否有!我肯定在使用当然而k~=nofElem
?@Dan是的,我认为更好,但这仍然有效,而且与OP-code相比,我没有那么麻烦我可能会使用k
。如果有什么(神奇的)k
变得比nofElem
大,这将停止循环-k~=nofElem
不会。或者有任何理由反对使用@hbaders吗?我不知道是否有!我肯定在使用当然而k~=nofElem
?@Dan是的,我认为更好,但这仍然有效,而且与OP-code相比,我没有那么麻烦我可能会使用k
。如果k
以某种方式(神奇地)变得大于nofElem
,这将停止循环-k~=nofElem
不会。或者有任何理由不使用@hbaders吗?我不知道是否有!我肯定在使用