Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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
Excel Matlab中的数据存储与导出_Excel_Matlab_Matrix - Fatal编程技术网

Excel Matlab中的数据存储与导出

Excel Matlab中的数据存储与导出,excel,matlab,matrix,Excel,Matlab,Matrix,以下是我遇到的问题的背景信息: 1) 输出是一个单元格数组,每个单元格包含一个大小为1024 x 1024、类型为double的矩阵 2) labelbout是一个与输出相同的单元数组,只是每个矩阵都已二值化 3) 我使用函数regionprops为输出的每个单元格提取ROI(每个图像中有多个ROI)的平均强度和质心值 4) 道具是一个5 x 1的结构,有2个场(质心和平均强度) 问题是:我想获取每个矩阵中每个ROI的平均强度值并导出到excel。以下是我到目前为止的情况: for i = 1:

以下是我遇到的问题的背景信息:

1) 输出是一个单元格数组,每个单元格包含一个大小为1024 x 1024、类型为double的矩阵

2) labelbout是一个与输出相同的单元数组,只是每个矩阵都已二值化

3) 我使用函数regionprops为输出的每个单元格提取ROI(每个图像中有多个ROI)的平均强度和质心值

4) 道具是一个5 x 1的结构,有2个场(质心和平均强度)

问题是:我想获取每个矩阵中每个ROI的平均强度值并导出到excel。以下是我到目前为止的情况:

for i = 1:size(output,2)
    props = regionprops(labelboutput{1,i},output{1,i},'MeanIntensity','Centroid');  
end 

for i = 1:size(output,2)
    meanValues = getfield(props(1:length(props),'MeanIntensity'));
end 

writetable(struct2table(props), 'advanced_test.xlsx');
似乎有几个问题:

1) 我的getfield命令不起作用,并收到错误:“索引超过矩阵维度”

2) 当信息存储到props中时,它会覆盖每个矩阵的值。如何使道具成为5 x n(其中n=输出中的单元格数)

请帮忙

1) 我的getfield命令不起作用,并收到错误:“索引超过矩阵维度”

从结构数组中的同一字段中获取数值的更简单方法是:
[structArray.fieldName]
。在您的情况下,这将是:

  meanValues = [props.MeanIntensity];
2) 当信息存储到props中时,它会覆盖每个矩阵的值。如何使道具成为5 x n(其中n=输出中的单元格数)? 一种选择是预先分配一个必要维度的空单元格,然后用您的
regionprops
输出填充它。像这样:

for i = 1:size(output,2)
    props = regionprops(labelboutput{1,i},output{1,i},'MeanIntensity','Centroid');  
    meanValues = [props.MeanIntensity];

   % update this call to place props in non-overlapping parts of your file (e.g. append)
   % writetable(struct2table(props), 'advanced_test.xlsx');
end 
另一种选择是组合循环,以便在覆盖矩阵数据之前使用它。像这样:

for i = 1:size(output,2)
    props = regionprops(labelboutput{1,i},output{1,i},'MeanIntensity','Centroid');  
    meanValues = [props.MeanIntensity];

   % update this call to place props in non-overlapping parts of your file (e.g. append)
   % writetable(struct2table(props), 'advanced_test.xlsx');
end 

第二个循环的坏处在于,它在循环中有一个文件I/O步骤,这会让事情变慢;更不用说你需要减少你的writetable调用,这样它会将结果表放在
'advanced\u test.xlsx'

的非重叠区域中。非常感谢你的帮助!我想对数据做一个更改,但是,我不确定如何实现它。。。当前,meanValues中的每个单元格都包含所有平均强度。因此,meanValues是1 x n(输出中的单元数)单元数组。我希望在MeanValue列中打印平均强度,这样它将是一个5(每个矩阵中ROI的数量)x 4数组。如果我不清楚,请告诉我。再次感谢!!!!我想通了!谢谢你的帮助:)对不起,现在才看到这个。我很高兴你解决了这个问题!您是否使用了
重塑
或其他方法?如果你现在都准备好了,你能接受这个答案吗?我想你也会因此得到几分。