repeat values within array

Hi,
I have an array, that I need to extend. In specific I need to repeat each value n times. n is the length of another vector. I can select the number of value that needs to be repeated and I can repeat it, but I can't append it to the other repeated values in my for loop. It only shows the repetition of the last value. My code is as followed:
X=[0.5;0.5;0.6;0.6];
Y=[0.6;0.7;0.6;0.7];
dx=0.05;
dy=0.05;
X_klein=[min(X):dx:max(X)]';
Y_klein=[min(Y):dy:max(Y)]';
for m=1:length(X_klein)
XX=X_klein(m);
XX1=repmat(XX,length(Y_klein),1);
XX1(m)=[XX1(m);XX1];
end

 采纳的回答

You can edit your code using a cell array for the long way round:
X=[0.5;0.5;0.6;0.6];
Y=[0.6;0.7;0.6;0.7];
dx=0.05;
dy=0.05;
X_klein=[min(X):dx:max(X)]';
Y_klein=[min(Y):dy:max(Y)]';
XX1=cell(1,numel(X_klein));
for m=1:numel(X_klein)
XX=X_klein(m);
XX1{m}=repmat(XX,numel(Y_klein),1);
end
XX1=cell2mat(XX1);
disp(XX1)
0.5000 0.5500 0.6000 0.5000 0.5500 0.6000 0.5000 0.5500 0.6000
Or use meshgrid for the shorter way:
[XX1,YY1]=meshgrid(X_klein,Y_klein);
disp(XX1)
0.5000 0.5500 0.6000 0.5000 0.5500 0.6000 0.5000 0.5500 0.6000

4 个评论

Thanks, but I need it in one row vector like XX1=[0.5;0.5;0.5;0.55;0.55;0.55;0.6;0.6;0.6]. Your solution displays a matrix. Do you know a way to build the vector?
You can either serialize the output of meshgrid, or change the shape of XX1 when pre-allocating the cell.
I'm sorry, I still don't understand it. It's always the 3x3 matrix, but I need it in 9x1..
I solved it.Thank you for your help!

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by