How can I create a variable number of arrays and plot in the same image?

1 ビュー (過去 30 日間)
Ted Baker
Ted Baker 2020 年 7 月 16 日
コメント済み: Ted Baker 2020 年 7 月 16 日
Hi,
I'm trying to plot some txt files which have two columns, 'a' and 'b' as an image. 'a' is a variable that always counts from 0 to some number 'n', repeatedly 'k' number of times. 'b' is a value I'd like to assign to a pixel in the image. I've included a sample file to try and demonstrate this, where n = 4 and k = 3.
Ideally I would like to plot an image such that the number 'b' varies the colour of the pixel, with the x coordinate of the pixel determined by the value of 'a' and the y cordinated determined by the cycle through 'a', up to 'k'. Even writing this is a little confusing, so I hope this diagram will clarify how I would like the data to be plotted (using the example.txt file, where i've substituted the colour for just the value 'b').
However, I'm very confused as to how I can firstly calculated the number of times 'a' cycles (k), and secondly how I could either create one large array of size 'n' by 'k' to feed into the image() function. Is there a fast way of doing this, without needing to alter the code every runtime? My actual files are very large and I have hundreds of files, each with different 'n' and 'k' values - would I need some dynamic to accomodate this?
Thanks in advance.

採用された回答

jonas
jonas 2020 年 7 月 16 日
編集済み: jonas 2020 年 7 月 16 日
Something like this?
data = readmatrix('example.txt')
x = data(:,1);
v = data(:,2);
id = find(x == 0);
im = reshape(v,id(2)-1,[])'
image(im)
  1 件のコメント
Ted Baker
Ted Baker 2020 年 7 月 16 日
Thank you jonas, that was perfect. I see how I can used find() in the future with reshape(). Smart. :)

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2020 年 7 月 16 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by