MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

0

distributing two values in 3d array

Girvani Manoharan さんによって質問されました 2019 年 3 月 11 日
最新アクティビティ KALYAN ACHARJYA
さんによって 編集されました 2019 年 3 月 12 日
I want to distribute two chosen values in 3d array. I have a below code I have created. How can I distribute only two values instead of rand() function? Much appreciate your guidance.
L=60; % Number of columns
b=25; % Number of rows
w=25; %the depth of the 3D lattice
K_f1=5e6;
K_f2=2e6;
b_centre=3;
b_sides=(b-b_centre)/2;
b_1=1:b_sides;
b_2=b_sides+1:b_sides+b_centre;
b_3=b_sides+b_centre+1:b;
A=zeros(L,b,w);
for r=1:L
for q=1:b_sides
for s=1:w
A(r,q,s)=K_f1*rand;
end
end
end
for r=1:L
for q=b_sides+1:b_sides+b_centre
for s=1:w
A(r,q,s)=K_f2*rand;
end
end
end
for r=1:L
for q=b_sides+b_centre+1:b
for s=1:w
A(r,q,s)=K_f1*rand;
end
end
end

  0 件のコメント

サインイン to comment.

3 件の回答

回答者: KALYAN ACHARJYA
2019 年 3 月 11 日
編集済み: KALYAN ACHARJYA
2019 年 3 月 11 日
 採用された回答

How can I distribute only two values instead of rand() function?
You can fixed the value as per your need
randi([1, 2],1)/10 ;
Please replace the value 1 or 2, as per your desired value
This expression pick any one value in between 0.1 or 0.2 (Either 0.1 or 0.2)

  0 件のコメント

サインイン to comment.


Rik
回答者: Rik
2019 年 3 月 11 日

You could also do the following:
L=60; % Number of columns
b=25; % Number of rows
w=25; %the depth of the 3D lattice
K_f1=5e6;
K_f2=2e6;
list_of_values=[K_f1 K_f2];
ind=randi(numel(list_of_values),b,L,w);%generate indexing matrix
output=list_of_values(ind);%apply the random choices
This syntax allows you to expand beyond two values and will not require you to make assumptions about the characteristics of the filler values.

  0 件のコメント

サインイン to comment.


回答者: Girvani Manoharan 2019 年 3 月 12 日

Many thanks Kalyan Acharja and Rik. Much appreciated.
+

  1 件のコメント

KALYAN ACHARJYA
2019 年 3 月 12 日
Welcome Always

サインイン to comment.



Translated by