调用我编写的matlab函数时,数据类型有问题。
我的问题是:
用我编写的另一个函数,我打开并获取了Simulink文件的“inport”和“outport”块的名称和类型,并将所有这些存储在一个结构中。
所有这些工作正常。
问题出在我的第二个函数上,这个函数检索旧的结构,根据输入类型,创建并完成一个新的字段,并根据类型使用适当的测试序列(double,single,uint8,logical...)的inport相关。但问题是,当我检查用我的函数获得的序列的类型时,通过在matlab脚本中调用它,我只得到了“double”。没有布尔值,uint8,单精度等。尽管我在函数中用正确的类型填充了我的序列。
function [slxStimStruct] = slxStim(schedTime,inportType,struct)
time = 0:schedTime:10;
N = length(inportType);
stim = cell(1,N); % Cell array in which we will stock test sequences
for i=1:N
v = zeros(1,length(time)-1);
for j=1:length(time)-1
if strcmp(inportType(i),'boolean')
v(j) = logical(randi([0 1],1));
elseif strcmp(inportType(i),'single')
v(j) = single(randn());
然后是对所有数据类型的测试。
end
end
stim{i} = v;
end
struct.stim = stim;
slxStimStruct = struct;
我知道这与函数只能在局部工作的事实有关,我还认为,要解决这个问题,我应该在结构中创建一个包含测试序列可以接受的类型的字段,但我也无法做到这一点。
有人知道如何解决这个问题吗?
1条答案
按热度按时间wvmv3b1j1#
之后
v
是一个双精度数组。该数组的所有元素都是双精度的,并且不能是其他类型。MATLAB中的每个数组都保存一种类型。当你这样做
将单精度转换为双精度以存储在双精度数组中。
如果需要不同类型的序列,请将
v
设为单元格数组:注意索引单元格数组时使用的花括号。
单元格数组存储矩阵,每个元素都是一个独立的数组,有自己的类型。这是一个效率很低的存储值的方法,如果
v
很大,最好只在双精度数组中存储双精度数。