【发布时间】:2013-04-29 02:54:26
【问题描述】:
下午好,
我有一个包含许多多波段图像的单元阵列(每个图像 6 个波段)。 我的多维数组称为“D”,有两列:第一列包含图像名称,第二列包含图像文件(包含行、带...)。首先,我想使用以下代码将其转换为双精度格式(现在是 uint16),但我收到以下错误“??? Error using ==> double Too many input arguments.”
D= double(C{:,1});
然后,我有这样的价值观:
a1=1957
a2= 1900
a3= 1554
a4=1036
a5=215
a6=80
我想要做的是创建一个循环(我正在简化问题),因为我需要对图像的每个波段进行相同的操作。代码如下所示:
for k = 1:band(D{:,1})
band1= D(:,:,1);
band2= D(:,:,2);
...
band1*a1=output1
band2*a2=output2
end
但我真的不知道如何表达。真的提前谢谢了
在元胞阵列的每一行,都有一个多波段图像。这是我创建的方式:
fileNames = dir(fullfile(myPath, '*.tif'));
C = cell(length(fileNames), 2);
for k = 1:length(fileNames)
filename = fileNames(k).name;
C{k, 1} = filename;
C{k, 2} = imread(filename);
end
【问题讨论】:
-
我认为您混淆了单元格数组和多维数组这两个术语。您能否展示
C的一小部分(一两行就足够了,这些单元格中存储的任何内容)? -
是的,对不起!细胞阵列! ;)
-
元胞数组中存储的内容不清楚,请举个例子
-
在单元阵列的每一行,都有一个多波段图像。这是我创建的方式。文件名 = dir(fullfile(myPath, '*.tif')); C = 单元格(长度(文件名),1); C = 单元格(长度(文件名),2);对于 k = 1:length(fileNames) 文件名 = fileNames(k).name; C{k} = imread(文件名); C{k, 1} = 文件名; C{k, 2} = imread(文件名);结束
-
我在问题中包含了您的评论(稍作修改)
标签: matlab