这是我在Matlab中的代码:我怎样才能保存所有5个图像的所有值?此代码仅返回最后一张图片!我尝试使用IM(l),但它给了我一个错误:In an assignment A(I) = B, the number of elements in B and I must be the same.
Amount_measurements = 5;
IM=zeros(2097152,1);
l=1;
for l=(1:Amount_measurements)
if l < 9
%index = double(0)+double(0)+double(l+1);
index = strcat(num2str(double(0)),num2str(double(0)),num2str(double(l+1)));
elseif l < 99
index = double(0)+double(l+1);
else
index = double(l+1);
end
file_name1='trial.nii.gz';
%disp(file_name1);
jesu=load_nii(file_name1);
[x,y,z] = meshgrid(1:256,1:256,1:256);
[lx,ly,lz] = meshgrid(1:2:256,1:2:256,1:2:256);
newImage = interp3(x,y,z,jesu.img,lx,ly,lz);
IM= newImage(:);
end
我希望将值newImage(:)存储为IM1=newImage(:) IM2=newImage(:) IM3=newImage(:) IM4=newImage(:)
等等......我怎么能用它来进行呢?
答案 0 :(得分:2)
由于您提到需要IM1=newImage(:) IM2=newImage(:) IM3=newImage(:) IM4=newImage(:)
的可变长度版本,因此您正在寻找一个单元格数组。尝试
IM{l} = newImage;
而不是
IM(l) = newImage(:);
重要的区别是使用括号而不是括号。如果要重塑为矢量,请使用newImage(:)
的右侧,如果要将其保留为矩阵,请使用newImage
。
答案 1 :(得分:-1)
通过使用IM(l)
,您尝试将整个列向量(newImage(:)
)添加到数组IM
中的单个元素(第l个元素),这就是Matlab的原因抛出错误。
您应该考虑连接:因为newImage(:)
是列向量,所以替换
IM= newImage(:);
与
IM=[IM newImage(:)];
但是在脚本的顶部,您还应该将IM
初始化为
IM=[];
在循环结束时,生成的IM
将有Amount_measurements
列,其中1列= 1 newImage(:)。
注意#1 :仅当newImage(:)
的长度始终相同时才会有效。
Note#2 :如果你知道向量newImage(:)
的先验有多长,并且再次假设它的长度永远不会改变,你应该考虑预先分配IM
矩阵将IM=[];
替换为IM=zeros(X,Amount_measurements);
,其中X
是newImage(:)
中元素的数量。最后,关于连接阶段,您应该将IM=[IM newImage(:)];
替换为IM(:,l)=newImage(:)
Note#3 :相反,如果newImage(:)
的大小可以改变,则不能依赖预分配和矩阵,但必须使用单元数组:循环中的最后一条指令应为{{ 1}}。