フィルターのクリア

how to populate the left side with the same values as the right side in an array

3 ビュー (過去 30 日間)
Hello All,
I want to write a small code that, given an array with an n number of odd cells, populates the left side with the same values as the right side (already populated), and the center cell remains unchanged. I developed the following code:
for k=drange(1:n/2+0.5)
w(k)=input('please input half of the values')
end
p = randi(10,10,1); % Create Data
w = randi(10,10,1); % Create Data
[x L E I] = deal(3, 5, 7, 13); % Create Data
P(j)=-w(j)/(x*(15*x-37*L^2)*(76*H*Y))
q==0
for j=drange(n/2+1.5:n)
q=q+1
P(j)=P(n/2-0.5-q)
end
However, I keep obtaining different errors when I run this script. The most common is:
Index exceeds matrix dimensions.
Error in matlab_codigo (line 11) P(j)==P(n/2-0.5-q)
But other errors also occur. It depends of the inputs I give to the program.
Any help appreciated. Thanks
regards, Hugo

採用された回答

Image Analyst
Image Analyst 2014 年 12 月 5 日
編集済み: Image Analyst 2014 年 12 月 5 日
Instead of doing things like n/2+0.5, use ceil(n/2). ceil() goes to the next higher integer. There is also a floor() function to go down (chop off the fraction), and a fix() which goes either way but always towards 0.

その他の回答 (1 件)

Roger Stafford
Roger Stafford 2014 年 12 月 5 日
t = 1:floor(n/2);
P(:,t) = P(:,n+1-t);
  3 件のコメント
Image Analyst
Image Analyst 2014 年 12 月 5 日
What does drange() do? That's not in base MATLAB.
Roger Stafford
Roger Stafford 2014 年 12 月 5 日
Try this, Hugo:
P = rand(7,5); % <-- Choose any sizes you please
n = size(P,2);
disp(P)
t = 1:floor(n/2);
P(:,t) = P(:,n+1-t);
disp(P)

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

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by