Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何从多个.png图像制作单个256*256*N(双精度).mat_Matlab_For Loop_Png_Transform_Mat - Fatal编程技术网

Matlab 如何从多个.png图像制作单个256*256*N(双精度).mat

Matlab 如何从多个.png图像制作单个256*256*N(双精度).mat,matlab,for-loop,png,transform,mat,Matlab,For Loop,Png,Transform,Mat,有100个PNG图像,大小=256*256,通道=1 这是我的测试代码(在mat中保存2个图像的测试): ->test.mat为256X256X2双精度 但是,我想在垫子中保存100个图像。 我的想法是F1~1001~100.png,然后是cat(1,F1,F2…F100),最后保存。 所以我尝试在for循环create F1~100中使用eval()来相应地加载1~100.png 像这样: for i=1:100 eval(["F",num2str(c),"

有100个PNG图像,大小=256*256,通道=1 这是我的测试代码(在mat中保存2个图像的测试):

->test.mat为256X256X2双精度

但是,我想在垫子中保存100个图像。 我的想法是F1~1001~100.png,然后是cat(1,F1,F2…F100),最后保存。 所以我尝试在for循环create F1~100中使用eval()来相应地加载1~100.png 像这样:

for i=1:100
    eval(["F",num2str(c),"=",im2double(imread(img_names{c}))]);
end
但这不是工作。
这个问题有什么解决办法吗?

只需预先分配矩阵:

last=im2double(imread(img_names{c}))
F(:,:,length(img_names))=last;
然后循环并填充

for i=1:100
    F(:,:,i)=im2double(imread(img_names{i}));
end
这仅适用于相同大小的图像和灰度图像


注:eval是最差的MATLAB函数,Mathworks本身非常不鼓励使用它。永远不要使用它。

您试图使用动态变量名(即动态创建变量)。Stackoverflow中没有足够的空间来解释这是多么可怕的想法。只需制作一个矩阵,将图像存储在第三个dim中,正如标题所示。好的,我明白了。谢谢你的提醒。我使用
F=cell(1100)
F{I}=im2double(imread(img_name{I}))
label=cat(3,F{:})最后。它工作得很好。但我不知道它是否有任何缺陷或错误。
for i=1:100
    F(:,:,i)=im2double(imread(img_names{i}));
end