Matlab 无法执行分配,因为左侧和右侧的元素数不同
我有一个数组Matlab 无法执行分配,因为左侧和右侧的元素数不同,matlab,matrix,Matlab,Matrix,我有一个数组StartMeasuring,,里面填充了10个数字。我想在矩阵深度中填充10个数组,从开始测量中的数字开始倒数到零。 StartMeasuring=randi([10 30],1,10); lenDepth =len(StartMeasuring); Depth=NaN(lenDepth,30); for i=1:lenDepth Depth(i)=StartMeasuring(i):-1:0; end 我试图创建一个for循环,并用NaN替换一个矩阵,但出现了错误:
StartMeasuring,
,里面填充了10个数字。我想在矩阵深度
中填充10个数组,从开始测量中的数字开始倒数到零。
StartMeasuring=randi([10 30],1,10);
lenDepth =len(StartMeasuring);
Depth=NaN(lenDepth,30);
for i=1:lenDepth
Depth(i)=StartMeasuring(i):-1:0;
end
我试图创建一个for循环,并用NaN
替换一个矩阵,但出现了错误:
Unable to perform assignment because the left and right sides have a different number of elements.
Error in sd (line 53)
Depth(i)=StartMeasuring(i):-1:0;
我不明白为什么会出现这个错误,因为Depth
和StartMeasuring
的大小都是10
StartMeasuring=randi([10 30],1,10);
lenDepth = length(StartMeasuring); % numel is preferred
Depth = NaN(lenDepth,31);
for ii = 1:lenDepth
Depth(ii,1:StartMeasuring(ii)+1) = StartMeasuring(ii):-1:0;
end
正如您最初所做的那样,使用单数进行索引会得到矩阵的单个元素,这并不奇怪。相反,将行作为单个数字进行索引,让它根据表达式填充所有列。在中阅读有关索引的更多信息
另外,StartMeasuring(ii):-1:0
的大小在30和1之间是随机的,这意味着您必须根据其当前长度来存储它,在您的情况下(整数)由StartMeasuring(ii)+1给出
显示imagesc(深度)
的图:
请注意,我还更改了其他一些内容:
len
是Python,而不是MATLAB。使用length
,或者,最好是1D数组numel
- 赋值运算符
=
周围的空格有助于提高可读性
- 在MATLAB中,通常不使用它们作为变量名
正如您最初所做的那样,使用单数进行索引会得到矩阵的单个元素,这并不奇怪。相反,将行作为单个数字进行索引,让它根据表达式填充所有列。在中阅读有关索引的更多信息
另外,StartMeasuring(ii):-1:0
的大小在30和1之间是随机的,这意味着您必须根据其当前长度来存储它,在您的情况下(整数)由StartMeasuring(ii)+1给出
显示imagesc(深度)
的图:
请注意,我还更改了其他一些内容:
len
是Python,而不是MATLAB。使用length
,或者,最好是1D数组numel
- 赋值运算符
=
周围的空格有助于提高可读性
- 在MATLAB中,通常不使用它们作为变量名
深度
实际尺寸为10x30,而不是像开始测量那样的10倍
深度
实际尺寸为10x30,而不是像开始测量那样的10倍