如何在MatLab中向数组添加元素?

时间:2019-06-25 22:52:58

标签: arrays matlab loops plot matlab-figure

我正在尝试绘制一个像素亮度与该像素中心距的图表。为此,我使用循环来检查每个像素的这些值。但是,当将它们添加到我的数组时,我发现我做不到。问题之一是我必须先定义数组大小,以便没有任何值位于正确的位置。我相信除了将值添加到数组之外,其他所有方法都可以使用。

我尝试了各种串联方法将每个像素的值添加到数组中。我没有其他解决方案可以尝试。

folder3 = 'C:\Users\slenka\Desktop\Image_Analysis\Subtracted';
    cd('C:\Users\slenka\Desktop\Image_Analysis\Subtracted');
    subtractedFiles = [dir(fullfile(folder3,'*.TIF')); dir(fullfile(folder3,'*.PNG')); dir(fullfile(folder3,'*.BMP')); dir(fullfile(folder3,'*.jpg'))];
    numberOfSubImages= length(subtractedFiles);

    for b = 1 : numberOfSubImages
        subFileName=fullfile(folder3, subtractedFiles(b).name);
        chartImage=imread(subFileName);
        [chartY, chartX, chartNumberOfColorChannels] = size(chartImage);
        ccY= chartY/2;
        ccX= chartX/2;
        c=[ccX,ccY];
        distanceArray=zeros(1,chartX);
        intensityArray=zeros(1,chartY);
        f=1;
        g=1;
        for y=1:chartY
            for x=1:chartX

                D = sqrt((y - c(1)) .^ 2 + (x - c(2)) .^ 2);
                grayScale= impixel(chartImage, x, y);
                distanceArray(f)=[D];
                intensityArray(g)=[grayScale]; 
                f=f+1;
                g=g+1;
            end
        end
        xAxis=distanceArray;
        yAxis=intensityArray;
        plot(xAxis,yAxis);

    end

我期望有2个阵列,其中一个充满了图像中每个像素的光强度数据值,另一个充满了距图像中心距离的像素值。我想将这两个数组分别绘制为y和x轴。目前,实际结果是一个完全为零的空数组。

0 个答案:

没有答案